基础组件库
 
 
 
 
 

103 line
3.6 KiB

  1. import 'dart:convert';
  2. import 'dart:typed_data';
  3. import 'package:connectivity/connectivity.dart';
  4. import 'package:flutter/cupertino.dart';
  5. import 'package:flutter/foundation.dart';
  6. import 'package:flutter/material.dart';
  7. import 'package:mobpush_plugin/mobpush_custom_message.dart';
  8. import 'package:mobpush_plugin/mobpush_notify_message.dart';
  9. import 'package:mobpush_plugin/mobpush_plugin.dart';
  10. import 'package:zhiying_base_widget/models/app_config_model.dart';
  11. import 'package:zhiying_base_widget/pages/guide_page/guide_page.dart';
  12. import 'package:zhiying_base_widget/pages/home_page/home_page.dart';
  13. import 'package:zhiying_comm/util/application.dart';
  14. import 'package:zhiying_comm/zhiying_comm.dart';
  15. import 'package:dio/dio.dart';
  16. import 'package:zhiying_base_widget/utils/contants.dart';
  17. import 'package:zhiying_comm/util/shared_prefe_util.dart';
  18. import 'package:package_info/package_info.dart';
  19. // 启动页,页面初始化等操作~跟原生启动页保持一致,防止白屏问题
  20. class LaunchPage extends StatefulWidget {
  21. final WidgetBuilder builder;
  22. const LaunchPage({Key key, this.builder}) : super(key: key);
  23. @override
  24. _LaunchPageState createState() => _LaunchPageState();
  25. }
  26. class _LaunchPageState extends State<LaunchPage> {
  27. final GlobalKey navigatorKey = new GlobalKey();
  28. @override
  29. void initState() {
  30. Connectivity().checkConnectivity().then((connectivityResult) {
  31. if (connectivityResult == ConnectivityResult.mobile ||
  32. connectivityResult == ConnectivityResult.wifi) {
  33. // I am connected to a wifi network.
  34. Logger.debug('ConnectivityResult.wifi');
  35. print('ConnectivityResult.wifi');
  36. Application.init().then((_) async {
  37. PackageInfo packageInfo = await PackageInfo.fromPlatform();
  38. String versionNumber =
  39. await SharedPreferencesUtil.getStringValue(Constants.versionNumber);
  40. String currentVersionCode =
  41. packageInfo.buildNumber?.toString() ?? '';
  42. if (versionNumber == null || versionNumber == '' || versionNumber != currentVersionCode) {
  43. await _showGuideImage();
  44. SharedPreferencesUtil.setStringValue(Constants.versionNumber, currentVersionCode);
  45. }
  46. if (widget.builder != null) {
  47. Navigator.of(context).pushReplacement(CupertinoPageRoute(builder: widget.builder));
  48. } else {
  49. // Navigator.of(context).pushReplacement(
  50. // CupertinoPageRoute(builder: (context) => HomePage()));
  51. Navigator.of(context).pushReplacementNamed('/homePage');
  52. }
  53. }).catchError((err) {
  54. Logger.error(err);
  55. });
  56. } else {
  57. Logger.error('未知网络,APP初始化失败');
  58. print('unknow');
  59. }
  60. });
  61. super.initState();
  62. }
  63. Future _showGuideImage() async {
  64. // 引导页
  65. AppConfigGuideModel guide = AppConfigModel.getConfig()?.guideImage;
  66. if (guide != null && guide.images.length > 0) {
  67. Dio dio = Dio();
  68. List<Uint8List> guideImages = List();
  69. for (int i = 0; i < guide.images.length; i++) {
  70. Response response = await dio.get(guide.images[i], options: Options(responseType: ResponseType.bytes));
  71. if (response.statusCode == 200) {
  72. Uint8List data = Uint8List.fromList(response.data);
  73. guideImages.add(data);
  74. }
  75. }
  76. await Navigator.of(context).push(
  77. CupertinoPageRoute(builder: (context) => GuidePage(guide, guideImages)));
  78. }
  79. }
  80. @override
  81. Widget build(BuildContext context) {
  82. return Image.asset(
  83. 'assets/images/launch_image/launch_image.png',
  84. package: 'zhiying_base_widget',
  85. fit: BoxFit.cover,
  86. );
  87. }
  88. }