import 'dart:typed_data'; import 'package:connectivity/connectivity.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:zhiying_base_widget/dialog/tip_dialog/tip_dialog.dart'; import 'package:zhiying_base_widget/models/app_config_model.dart'; import 'package:zhiying_base_widget/pages/guide_page/guide_page.dart'; import 'package:zhiying_base_widget/pages/home_page/home_page.dart'; import 'package:zhiying_comm/util/application.dart'; import 'package:zhiying_comm/zhiying_comm.dart'; import 'package:dio/dio.dart'; import 'package:zhiying_base_widget/utils/contants.dart'; import 'package:zhiying_comm/util/shared_prefe_util.dart'; import 'package:package_info/package_info.dart'; // 启动页,页面初始化等操作~跟原生启动页保持一致,防止白屏问题 class LaunchPage extends StatefulWidget { final WidgetBuilder builder; const LaunchPage({Key key, this.builder}) : super(key: key); @override _LaunchPageState createState() => _LaunchPageState(); } class _LaunchPageState extends State { @override void initState() { Connectivity().checkConnectivity().then((connectivityResult) async { if (connectivityResult == ConnectivityResult.mobile || connectivityResult == ConnectivityResult.wifi) { // I am connected to a wifi network. Logger.debug('ConnectivityResult.wifi'); print('ConnectivityResult.wifi'); Application.init().then((_) async { PackageInfo packageInfo = await PackageInfo.fromPlatform(); String versionNumber = await SharedPreferencesUtil.getStringValue(Constants.versionNumber); String currentVersionCode = packageInfo.buildNumber?.toString() ?? ''; if (versionNumber == null || versionNumber == '' || versionNumber != currentVersionCode) { await _showGuideImage(); SharedPreferencesUtil.setStringValue(Constants.versionNumber, currentVersionCode); } if (widget.builder != null) { Navigator.of(context).pushReplacement(CupertinoPageRoute(builder: widget.builder)); } else { // Navigator.of(context).pushReplacement( // CupertinoPageRoute(builder: (context) => HomePage())); Navigator.of(context).pushReplacementNamed('/homePage'); } }).catchError((err) async { if(err.toString().contains("BaseSettingModel")){ await showDialog(context: context,child: TipDialog(content: "基本配置加载失败!请检查网络是否可用后再启动应用!",)); SystemNavigator.pop(); } Logger.error(err); }); } else { ///在无网络情况下提示用户打开网络 await showDialog(context: context,child: TipDialog(content: "无法连接网络!请打开移动网络/连接WIFI后再尝试",)); Logger.error('未知网络,APP初始化失败'); print('unknow'); SystemNavigator.pop(); } }); super.initState(); } Future _showGuideImage() async { // 引导页 AppConfigGuideModel guide = AppConfigModel.getConfig()?.guideImage; if (guide != null && guide.images.length > 0) { Dio dio = Dio(); List guideImages = List(); for (int i = 0; i < guide.images.length; i++) { Response response = await dio.get(guide.images[i], options: Options(responseType: ResponseType.bytes)); if (response.statusCode == 200) { Uint8List data = Uint8List.fromList(response.data); guideImages.add(data); } } await Navigator.of(context).push( CupertinoPageRoute(builder: (context) => GuidePage(guide, guideImages))); } } @override Widget build(BuildContext context) { return Image.asset( 'assets/images/launch_image/launch_image.png', package: 'zhiying_base_widget', fit: BoxFit.fill, ); } }