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:shared_preferences/shared_preferences.dart'; import '../common/Global.dart'; import '../common/func.dart'; import '../dialog/agreement_dialog.dart'; import '../network/NetworkConfig.dart'; import 'login/login_model.dart'; class StartPage extends StatefulWidget { const StartPage({super.key}); @override State createState() => _StartPageState(); } class _StartPageState extends State { late StreamSubscription subscription; final LoginModel _viewModel = LoginModel(); @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; } } }); getDeviceInfo(); _viewModel.getAppConfig(); } ///获取设备号 Future getDeviceInfo() async { DeviceInfoPlugin deviceInfo = DeviceInfoPlugin(); if (Platform.isIOS) { IosDeviceInfo iosInfo = await deviceInfo.iosInfo; NetworkConfig.deviceID = "${iosInfo.identifierForVendor}"; } else { dynamic infoData = await Global.method.invokeMethod("getInfo"); Map headersMap = Map.from(infoData); NetworkConfig.deviceID = headersMap["deviceID"]; print("deviceID==${NetworkConfig.deviceID}"); } } ///判断是否首次进入 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'), ), ); } }