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.

126 lines
4.2KB

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