import 'dart:async'; import 'dart:io'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:shared_preferences/shared_preferences.dart'; import 'package:talk/network/NetworkConfig.dart'; import '../common/func.dart'; import '../dialog/agreement_dialog.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((newData) { String code = newData['code']; if (code.isNotEmpty) { switch (code) { case "login": Navigator.pushReplacementNamed(context, "/HomePage"); break; default: Navigator.pushReplacementNamed(context, "/HomePage"); break; } } }); getIsFirst(); } @override void dispose() { // TODO: implement dispose subscription.cancel(); super.dispose(); } Future _loadData() async { // 获取token final SharedPreferences prefs = await SharedPreferences.getInstance(); final String token = prefs.getString('token') ?? ""; if (token != "") { _viewmodel.login("", "", 0, token); } else { Navigator.pushReplacementNamed(context, "/HomePage"); } setIsFirst(); } ///判断是否首次进入 getIsFirst() async { SharedPreferences prefs = await SharedPreferences.getInstance(); bool isFirst = prefs.getBool("IsFirst") ?? true; NetworkConfig.isTeenage = prefs.getBool("isTeenage") ?? false; NetworkConfig.teenagePassword = prefs.getString("teenagePassword") ?? ''; if (isFirst) { FunctionUtil.popDialog2(context, AgreementDialog( onTap: (index) { if (index == 0) { _loadData(); } else { SystemNavigator.pop(); exit(0); } }, )); } else { _loadData(); } } setIsFirst() async { SharedPreferences prefs = await SharedPreferences.getInstance(); prefs.setBool("IsFirst", false); } @override Widget build(BuildContext context) { return Image( width: MediaQuery.of(context).size.width, height: MediaQuery.of(context).size.height, fit: BoxFit.cover, image: const AssetImage('assets/images/img_start.png'), ); } }