import 'dart:async'; import 'dart:io'; import 'package:device_info_plus/device_info_plus.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:package_info/package_info.dart'; import 'package:shared_preferences/shared_preferences.dart'; import '../common/Global.dart'; import '../common/func.dart'; import '../dialog/agreement_dialog.dart'; import '../network/NetworkConfig.dart'; import 'home_model.dart'; class StartPage extends StatefulWidget { const StartPage({super.key}); @override State createState() => _StartPageState(); } class _StartPageState extends State { late StreamSubscription subscription; final HomeModel _viewModel = HomeModel(); @override void initState() { // TODO: implement initState super.initState(); subscription = _viewModel.streamController.stream.listen((event) { String code = event['code']; if (code.isNotEmpty) { switch (code) { case "getAppConfig": getIsFirst(); break; case "loginToToken": Navigator.pushReplacementNamed(context, "/HomePage"); break; case "loginError": NetworkConfig.token = ""; Navigator.pushReplacementNamed(context, "/HomePage"); break; } } }); _initData(); } ///初始化数据 _initData() async { getDeviceInfo(); if (Platform.isIOS) { NetworkConfig.Platform = "ios"; } else if (Platform.isAndroid) { NetworkConfig.Platform = "android"; } PackageInfo packageInfo = await PackageInfo.fromPlatform(); NetworkConfig.Version = packageInfo.version; ///获取app配置 _viewModel.getAppConfig(); } ///获取设备号/名称 Future getDeviceInfo() async { DeviceInfoPlugin deviceInfo = DeviceInfoPlugin(); if (Platform.isIOS) { IosDeviceInfo iosInfo = await deviceInfo.iosInfo; NetworkConfig.deviceID = "${iosInfo.identifierForVendor}"; NetworkConfig.deviceName = iosInfo.model; print("model==${iosInfo.model}"); print("localizedModel==${iosInfo.localizedModel}"); } else { dynamic infoData = await Global.method.invokeMethod("getInfo"); Map headersMap = Map.from(infoData); NetworkConfig.deviceID = headersMap["deviceID"]; NetworkConfig.Language = headersMap["Language"]; //系统语言 print("deviceID==${NetworkConfig.deviceID}"); print("Language==${NetworkConfig.Language}"); AndroidDeviceInfo androidInfo = await deviceInfo.androidInfo; NetworkConfig.deviceName = androidInfo.model; print("model==${androidInfo.model}"); } } ///判断是否首次进入 getIsFirst() async { SharedPreferences prefs = await SharedPreferences.getInstance(); bool isFirst = prefs.getBool("IsFirst") ?? true; if (isFirst) { ///首次进入弹出协议弹窗 FunctionUtil.popDialog2(context, AgreementDialog( onTap: (index) { if (index == 0) { _loadData(); } else { SystemNavigator.pop(); exit(0); } }, )); } else { _loadData(); } } ///初始化 Future _loadData() async { // 获取token final SharedPreferences prefs = await SharedPreferences.getInstance(); final String token = prefs.getString('token') ?? ""; NetworkConfig.token = token; print("NetworkConfig.token==${NetworkConfig.token}"); if (token != "") { _viewModel.loginToToken(); } else { Navigator.pushReplacementNamed(context, "/HomePage"); } setIsFirst(); } setIsFirst() async { SharedPreferences prefs = await SharedPreferences.getInstance(); prefs.setBool("IsFirst", false); } @override void dispose() { // TODO: implement dispose subscription.cancel(); super.dispose(); } @override Widget build(BuildContext context) { final size = MediaQuery.of(context).size; return Scaffold( backgroundColor: Color(0xFF17181A), body: Image( width: size.width, height: size.height, fit: BoxFit.cover, image: AssetImage('assets/images/img_start.png'), ), ); } // 获取原生的值 invokeNativeMethod(String method, Map map) async { dynamic args; try { args = await Global.method.invokeMethod(method, map); } on PlatformException catch (e) {} } }