together_mobile/lib/screens/welcome/welcome_screen.dart

109 lines
2.8 KiB
Dart
Raw Normal View History

2024-03-17 01:49:08 +08:00
import 'dart:async';
2023-06-21 17:44:28 +08:00
import 'package:flutter/material.dart';
2023-06-21 17:44:28 +08:00
import 'package:go_router/go_router.dart';
import 'package:flutter_easyloading/flutter_easyloading.dart';
2023-06-21 17:44:28 +08:00
2024-04-09 17:23:28 +08:00
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';
2023-06-21 17:44:28 +08:00
class WelcomeScreen extends StatefulWidget {
2024-03-17 01:49:08 +08:00
const WelcomeScreen({
super.key,
this.isLogout,
});
final String? isLogout;
2023-06-21 17:44:28 +08:00
@override
State<WelcomeScreen> createState() => _WelcomeScreenState();
}
class _WelcomeScreenState extends State<WelcomeScreen> {
Future<int> _tryLoginUseToken() async {
2024-03-17 01:49:08 +08:00
if (widget.isLogout != null) {
return 200;
}
await getIt.get<Token>().init();
if (getIt.get<Token>().token.isNotEmpty) {
2024-03-17 01:49:08 +08:00
EasyLoading.showInfo('自动登录中...');
try {
Map<String, dynamic> res = await signinByToken();
if (res['code'] == 10200) {
await getIt.get<Token>().updateToken(res['token']);
getIt.get<UserAccount>().init(res['data']);
await HiveDatabase.init();
return 10200;
} else {
getIt.get<Token>().clear();
return 9999;
}
} catch (e) {
return 500;
}
} else {
return 200;
}
}
2024-03-17 01:49:08 +08:00
@override
void initState() {
super.initState();
_tryLoginUseToken().then((value) {
if (value == 10200) {
EasyLoading.showSuccess(
'登录成功!',
duration: const Duration(seconds: 3),
dismissOnTap: true,
);
context.pushNamed('Chat');
} else if (value == 9999) {
EasyLoading.showInfo(
'登录状态已过期,请重新登录!',
duration: const Duration(seconds: 3),
dismissOnTap: true,
);
} else if (value == 500) {
EasyLoading.showError(
'连接服务器失败,请稍后再试!',
duration: const Duration(seconds: 3),
dismissOnTap: true,
);
} else {
EasyLoading.dismiss();
}
});
}
2023-06-21 17:44:28 +08:00
@override
Widget build(BuildContext context) {
return Scaffold(
body: SafeArea(
2024-03-17 01:49:08 +08:00
child: Column(
children: [
const SizedBox(
height: kDefaultPadding,
),
Image.asset('assets/images/welcome_image.png'),
CommonElevatedButton(
onPressed: () => context.pushNamed('SignIn'),
text: '登录',
),
CommonElevatedButton(
onPressed: () => context.pushNamed('SignUp'),
text: '注册',
color: kSecondaryColor,
),
],
),
2023-06-21 17:44:28 +08:00
),
);
}
}