import 'dart:io'; import 'package:dio/dio.dart'; import 'package:farm_tpf/data/repository/user_repository.dart'; import 'package:farm_tpf/main.dart'; import 'package:farm_tpf/presentation/screens/actions/nursery/sc_nursery.dart'; import 'package:farm_tpf/presentation/screens/actions/plant/sc_plant.dart'; import 'package:farm_tpf/presentation/screens/plot/sc_plot.dart'; import 'package:farm_tpf/presentation/screens/plot_detail/sc_plot_detail.dart'; import 'package:farm_tpf/presentation/screens/resources/sc_resource_helper.dart'; import 'package:farm_tpf/utils/const_common.dart'; import 'package:farm_tpf/utils/pref.dart'; import 'package:firebase_messaging/firebase_messaging.dart'; import 'package:flutter/material.dart'; class HomePage extends StatefulWidget { static Route route() { return MaterialPageRoute(builder: (_) => HomePage()); } @override _HomePageState createState() => _HomePageState(); } class _HomePageState extends State { UserRepository _userRepository = UserRepository(); final FirebaseMessaging _firebaseMessaging = FirebaseMessaging(); var pref = LocalPref(); var token; var client; String pushkey = ""; Future getSharedPrefs() async { token = await pref.getString(DATA_CONST.TOKEN_KEY); pushkey = await pref.getString(DATA_CONST.PUSH_KEY); var options = BaseOptions(baseUrl: ConstCommon.baseUrl); options.headers["Authorization"] = "Bearer $token"; client = Dio(options); if (Platform.isIOS) { _firebaseMessaging .requestNotificationPermissions(IosNotificationSettings()); } _firebaseMessaging.configure( onMessage: (Map message) async { print("onMessage: $message"); }, onBackgroundMessage: Platform.isIOS ? null : myBackgroundMessageHandler, onLaunch: (Map message) async { print("onLaunch: $message"); }, onResume: (Map message) async { print("onResume: $message"); }, ); _firebaseMessaging.requestNotificationPermissions( const IosNotificationSettings( sound: true, badge: true, alert: true, provisional: true)); _firebaseMessaging.onIosSettingsRegistered .listen((IosNotificationSettings settings) { print("Settings registered: $settings"); }); if (pushkey?.isEmpty ?? true) { _firebaseMessaging.getToken().then((String token) { assert(token != null); print("Push Messaging token: $token"); _userRepository.updateFcmToken(token).then((value) { print("send push key successful"); pref.saveString(DATA_CONST.PUSH_KEY, token); }); // client.put(""); }); } else { print("Don't need get push key"); } } @override void initState() { super.initState(); getSharedPrefs(); } @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar(title: const Text('Home')), body: Center( child: Column( mainAxisSize: MainAxisSize.min, children: [ Text("logged in."), MaterialButton( child: Text("Nursery action"), onPressed: () { Navigator.of(context).push( MaterialPageRoute(builder: (_) => ActionNurseryScreen())); }), MaterialButton( child: Text("Plant action"), onPressed: () { Navigator.of(context).push( MaterialPageRoute(builder: (_) => ActionPlantScreen())); }), MaterialButton( child: Text("Chi tiết lô"), onPressed: () { Navigator.of(context).push(MaterialPageRoute( builder: (_) => PlotDetailScreen( cropId: 1, ))); }), MaterialButton( child: Text("Danh sách lô"), onPressed: () { Navigator.of(context).push( MaterialPageRoute(builder: (_) => PlotListScreen())); }), MaterialButton( child: Text("ResourceHelperScreen"), onPressed: () { Navigator.of(context) .push(MaterialPageRoute( builder: (_) => ResourceHelperScreen( titleName: "phân bón", type: ConstCommon.supplyTypeDung, selectedId: 3, ), fullscreenDialog: false)) .then((value) { if (value != null) { print("Home: $value"); } }); }), ], ), ), ); } }