You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

140 lines
4.8KB

  1. import 'dart:io';
  2. import 'package:dio/dio.dart';
  3. import 'package:farm_tpf/data/repository/user_repository.dart';
  4. import 'package:farm_tpf/main.dart';
  5. import 'package:farm_tpf/presentation/screens/actions/nursery/sc_nursery.dart';
  6. import 'package:farm_tpf/presentation/screens/actions/plant/sc_plant.dart';
  7. import 'package:farm_tpf/presentation/screens/plot/sc_plot.dart';
  8. import 'package:farm_tpf/presentation/screens/plot_detail/sc_plot_detail.dart';
  9. import 'package:farm_tpf/presentation/screens/resources/sc_resource_helper.dart';
  10. import 'package:farm_tpf/utils/const_common.dart';
  11. import 'package:farm_tpf/utils/pref.dart';
  12. import 'package:firebase_messaging/firebase_messaging.dart';
  13. import 'package:flutter/material.dart';
  14. class HomePage extends StatefulWidget {
  15. static Route route() {
  16. return MaterialPageRoute<void>(builder: (_) => HomePage());
  17. }
  18. @override
  19. _HomePageState createState() => _HomePageState();
  20. }
  21. class _HomePageState extends State<HomePage> {
  22. UserRepository _userRepository = UserRepository();
  23. final FirebaseMessaging _firebaseMessaging = FirebaseMessaging();
  24. var pref = LocalPref();
  25. var token;
  26. var client;
  27. String pushkey = "";
  28. Future<Null> getSharedPrefs() async {
  29. token = await pref.getString(DATA_CONST.TOKEN_KEY);
  30. pushkey = await pref.getString(DATA_CONST.PUSH_KEY);
  31. var options = BaseOptions(baseUrl: ConstCommon.baseUrl);
  32. options.headers["Authorization"] = "Bearer $token";
  33. client = Dio(options);
  34. if (Platform.isIOS) {
  35. _firebaseMessaging
  36. .requestNotificationPermissions(IosNotificationSettings());
  37. }
  38. _firebaseMessaging.configure(
  39. onMessage: (Map<String, dynamic> message) async {
  40. print("onMessage: $message");
  41. },
  42. onBackgroundMessage: Platform.isIOS ? null : myBackgroundMessageHandler,
  43. onLaunch: (Map<String, dynamic> message) async {
  44. print("onLaunch: $message");
  45. },
  46. onResume: (Map<String, dynamic> message) async {
  47. print("onResume: $message");
  48. },
  49. );
  50. _firebaseMessaging.requestNotificationPermissions(
  51. const IosNotificationSettings(
  52. sound: true, badge: true, alert: true, provisional: true));
  53. _firebaseMessaging.onIosSettingsRegistered
  54. .listen((IosNotificationSettings settings) {
  55. print("Settings registered: $settings");
  56. });
  57. if (pushkey?.isEmpty ?? true) {
  58. _firebaseMessaging.getToken().then((String token) {
  59. assert(token != null);
  60. print("Push Messaging token: $token");
  61. _userRepository.updateFcmToken(token).then((value) {
  62. print("send push key successful");
  63. pref.saveString(DATA_CONST.PUSH_KEY, token);
  64. });
  65. // client.put("");
  66. });
  67. } else {
  68. print("Don't need get push key");
  69. }
  70. }
  71. @override
  72. void initState() {
  73. super.initState();
  74. getSharedPrefs();
  75. }
  76. @override
  77. Widget build(BuildContext context) {
  78. return Scaffold(
  79. appBar: AppBar(title: const Text('Home')),
  80. body: Center(
  81. child: Column(
  82. mainAxisSize: MainAxisSize.min,
  83. children: <Widget>[
  84. Text("logged in."),
  85. MaterialButton(
  86. child: Text("Nursery action"),
  87. onPressed: () {
  88. Navigator.of(context).push(
  89. MaterialPageRoute(builder: (_) => ActionNurseryScreen()));
  90. }),
  91. MaterialButton(
  92. child: Text("Plant action"),
  93. onPressed: () {
  94. Navigator.of(context).push(
  95. MaterialPageRoute(builder: (_) => ActionPlantScreen()));
  96. }),
  97. MaterialButton(
  98. child: Text("Chi tiết lô"),
  99. onPressed: () {
  100. Navigator.of(context).push(MaterialPageRoute(
  101. builder: (_) => PlotDetailScreen(
  102. cropId: 1,
  103. )));
  104. }),
  105. MaterialButton(
  106. child: Text("Danh sách lô"),
  107. onPressed: () {
  108. Navigator.of(context).push(
  109. MaterialPageRoute(builder: (_) => PlotListScreen()));
  110. }),
  111. MaterialButton(
  112. child: Text("ResourceHelperScreen"),
  113. onPressed: () {
  114. Navigator.of(context)
  115. .push(MaterialPageRoute(
  116. builder: (_) => ResourceHelperScreen(
  117. titleName: "phân bón",
  118. type: ConstCommon.supplyTypeDung,
  119. selectedId: 3,
  120. ),
  121. fullscreenDialog: false))
  122. .then((value) {
  123. if (value != null) {
  124. print("Home: $value");
  125. }
  126. });
  127. }),
  128. ],
  129. ),
  130. ),
  131. );
  132. }
  133. }