import 'dart:async'; import 'dart:io' show Platform; import 'dart:ui'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:flutter_bmfbase/BaiduMap/bmfmap_base.dart' show BMFMapSDK, BMF_COORD_TYPE; import 'package:flutter_screenutil/screenutil_init.dart'; import 'package:hyzp_ybqx/pages/Login/LoginTabs2.dart'; import 'package:hyzp_ybqx/pages/MyMsics/05_updated/MyUpdatedNew.dart'; import 'package:hyzp_ybqx/services/EventBus.dart'; import 'package:hyzp_ybqx/services/Storage.dart'; import 'package:package_info/package_info.dart'; // 引入provider import 'package:provider/provider.dart'; import 'components/commonFun.dart'; import 'file_manager/file_manager_init.dart'; import 'provider/player_ratio.dart'; import 'provider/player_region.dart'; import 'routers/router.dart'; // 整个Flutter App的Android入口 void main() { //file_manager_load(); //runApp(MyApp()); //整个Flutter App的入口01 WidgetsFlutterBinding.ensureInitialized(); //必须要添加这个进行初始化 否则下面会错误 //Flutter 强制竖屏 SystemChrome.setPreferredOrientations([ DeviceOrientation.portraitUp, ]).then((_) { //整个Flutter App的入口02 checkPermission(); //请求用户授权 }); } //整个Flutter App的入口07。入口处理结束,正式开始Flutter App class MyApp extends StatefulWidget { MyApp({Key key}) : super(key: key); _MyAppState createState() => _MyAppState(); } class _MyAppState extends State { @override void initState() { initApp(); // 1、处理百度地图sdk初始化鉴权 // startGetStatisDataNew(); // 2、登录前提前获取统计数据,改善用户登录体验 // 3、处理版本更新 PackageInfo.fromPlatform().then((PackageInfo packageInfo) async { String appName = packageInfo.appName; String packageName = packageInfo.packageName; String version = packageInfo.version; String buildNumber = packageInfo.buildNumber; String buildDate = '${buildNumber.substring(0, 4)}.${buildNumber.substring(4, 6)}.${buildNumber.substring(6, 8)}'; print('appName = $appName'); print('packageName = $packageName'); print('version = $version'); print('buildNumber = $buildNumber'); print('buildDate = $buildDate'); await MyUpdatedNew( ver: version, date: buildDate, theContext: context, bStartUpdated: true); }); super.initState(); } void initApp() async { getDeviceId().then((value) { g_userInfo.thisDeviceId = value; // 百度地图sdk初始化鉴权 if (Platform.isIOS) { BMFMapSDK.setApiKeyAndCoordType('I022V5cRWKDn8gguTTa1gbxqPMYWU4G0', BMF_COORD_TYPE.BD09LL); } else if (Platform.isAndroid) { // Android 目前不支持接口设置Apikey, // 请在主工程的Manifest文件里设置,详细配置方法请参考官网(https://lbsyun.baidu.com/)demo BMFMapSDK.setCoordType(BMF_COORD_TYPE.BD09LL); } }); // 从磁盘读取变量 g_bVoiceRemind = await Storage.getBool('bVoiceRemind'); // g_bVoiceRemind = (null == g_bVoiceRemind) ? false : g_bVoiceRemind; // 默认关闭 g_bVoiceRemind = (null == g_bVoiceRemind) ? true : g_bVoiceRemind; // 默认开启 // print('g_bVoiceRemind = $g_bVoiceRemind'); g_remindGap = await Storage.getInt('nRemindGap'); g_remindGap = (null == g_remindGap) ? 60 : g_remindGap; // 提醒间隔默认为60S eventBus.fire(VoiceRemindUpdate('g_bVoiceRemind 数据已更新')); } @override Widget build(BuildContext context) { //ScreenUtil.instance = ScreenUtil(width: 750, height: 1334)..init(context); //750:1334 //默认 width : 1080px , height:1920px , allowFontScaling:false //double width = MediaQuery.of(context).size.width; //sizeMediaQuery = MediaQuery.of(context).size; //这样不对 print('sizeMediaQuery = $sizeWindowPhysicalSize'); //size: Size(360.0, 674.7) //自动适应安卓手机系统分辨率,解决 S10 手机正方形变形问题 print('window.physicalSize = ${window.physicalSize}'); //window.physicalSize = Size(1080.0, 2136.0) sizeWindowPhysicalSize = window.physicalSize; //double _heigth = 1080 * 16 / 9; double _heigth = 1080 * sizeWindowPhysicalSize.height / sizeWindowPhysicalSize.width; print('_heigth = $_heigth'); return ScreenUtilInit( designSize: Size(1080, _heigth), //安卓手机宽高尺寸,_heigth = 1080 * 16 / 9; //designSize: Size(1080, 1920), //安卓手机宽高尺寸,_heigth = 1080 * 16 / 9; //designSize: Size(750, 1334), //统一使用美工设计的宽高尺寸,苹果比例 //designSize: sizeWindowPhysicalSize, //自动适应安卓手机系统分辨率,解决 S10 手机正方形变形问题 allowFontScaling: false, builder: () => MultiProvider( providers: [ // ChangeNotifierProvider(builder: (_) => Counter()), // ChangeNotifierProvider(builder: (_) => Cart()), // ChangeNotifierProvider(builder: (_) => CheckOut()), // ChangeNotifierProvider(builder: (_) => PlayerRegionProvide()), // ChangeNotifierProvider(builder: (_) => PlayerRatioProvide()), ChangeNotifierProvider(create: (context) => PlayerRegionProvide()), ChangeNotifierProvider(create: (context) => PlayerRatioProvide()), ], child: MaterialApp( home: LoginTabs2(), debugShowCheckedModeBanner: false, initialRoute: '/', onGenerateRoute: onGenerateRoute, theme: ThemeData( // primaryColor: Colors.yellow primaryColor: Colors.white), //设置文字大小不随系统字体设置改变 builder: (context, widget) { return MediaQuery( data: MediaQuery.of(context).copyWith(textScaleFactor: 1.0), child: widget, ); }, ), ), ); } } //整个Flutter App的入口06 class SplashScreen extends StatefulWidget { @override _SplashScreenState createState() => new _SplashScreenState(); } class _SplashScreenState extends State { startTime() async { //设置启动图生效时间 var _duration = new Duration(seconds: 2); return new Timer(_duration, navigationPage); } //整个Flutter App的入口07 void navigationPage() { Navigator.of(context).pushReplacementNamed('/home'); } @override void initState() { super.initState(); startTime(); } @override Widget build(BuildContext context) { return Scaffold( body: Column( children: [ SizedBox(height: MediaQuery.of(context).padding.top), // 不覆盖顶部状态栏 Container( width: MediaQuery.of(context).size.width, // 屏幕宽度 height: MediaQuery.of(context).size.height - MediaQuery.of(context).padding.top, // 屏幕高度 // child: Image.asset('assets/images/hyzp_ybqx00_yibin_launche.png', fit: BoxFit.cover), // child: Image.asset('assets/images/hyzp_ybqx01_cuiping_launche.png', fit: BoxFit.cover), child: Image.asset('assets/images/hyzp_ybqx_launche.png', fit: BoxFit.cover)), ], ), ); } }