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.

133 lines
4.5KB

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