import 'package:flutter/material.dart'; import 'package:go_router/go_router.dart'; import 'package:flutter_easyloading/flutter_easyloading.dart'; import '../../common/constants.dart'; import '../../components/common_widgets.dart' show CommonElevatedButton; import '../../database/hive_database.dart'; import '../../models/init_get_it.dart'; import '../../models/token_model.dart'; import '../../models/user_model.dart'; import '../../request/signup_signin.dart'; class WelcomeScreen extends StatefulWidget { const WelcomeScreen({super.key}); @override State createState() => _WelcomeScreenState(); } class _WelcomeScreenState extends State { Future _tryLoginUseToken() async { await getIt.get().init(); if (getIt.get().token.isNotEmpty) { try { Map res = await signinByToken(); if (res['code'] == 10200) { await getIt.get().updateToken(res['token']); getIt.get().init(res['data']); await HiveDatabase.init(); return 10200; } else { getIt.get().clear(); return 9999; } } catch (e) { return 500; } } else { return 200; } } @override Widget build(BuildContext context) { return Scaffold( body: SafeArea( child: FutureBuilder( future: _tryLoginUseToken(), builder: (BuildContext context, AsyncSnapshot snapshot) { if (snapshot.hasData) { int? data = snapshot.data; if (data == 10200) { EasyLoading.showSuccess( '登录成功!', duration: const Duration(milliseconds: 500), ); context.pushNamed('Chat'); } else if (data == 9999) { EasyLoading.showInfo( '登录状态已过期,请重新登录!', duration: const Duration(milliseconds: 500), ); } else if (data == 500) { EasyLoading.showError( '连接服务器失败,请稍后再试!', duration: const Duration(milliseconds: 500), ); } else { EasyLoading.dismiss(); } } else { EasyLoading.show(status: '自动登录中...'); } return Column( children: [ const SizedBox( height: kDefaultPadding, ), Image.asset('assets/images/welcome_image.png'), CommonElevatedButton( onPressed: () => context.push('/signin'), text: '登录', ), CommonElevatedButton( onPressed: () => context.push('/signup'), text: '注册', color: kSecondaryColor, ), ], ); }), ), ); } }