120 lines
3.3 KiB
Dart
120 lines
3.3 KiB
Dart
import 'package:flutter/material.dart';
|
|
import 'package:dio/dio.dart';
|
|
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
|
import 'package:flutter/services.dart';
|
|
import 'package:yaml/yaml.dart';
|
|
import '../../../app/enum/config_path_enum.dart';
|
|
import 'home.dart';
|
|
|
|
class Login extends ConsumerStatefulWidget {
|
|
const Login({super.key});
|
|
@override
|
|
ConsumerState<Login> createState() => _LoginPageState();
|
|
}
|
|
|
|
class _LoginPageState extends ConsumerState<Login> {
|
|
final dio = Dio();
|
|
final _userPwd = TextEditingController();
|
|
final _userId = TextEditingController();
|
|
late Color primaryColor;
|
|
bool _isLoading = true;
|
|
|
|
@override
|
|
void initState() {
|
|
super.initState();
|
|
_loadConfig();
|
|
}
|
|
|
|
Future<void> _loadConfig() async {
|
|
final configString = await rootBundle.loadString(
|
|
ConfigPathEnum.uiConfig.configPath,
|
|
);
|
|
final config = loadYaml(configString);
|
|
setState(() {
|
|
primaryColor = Color(config['theme']['primaryColor']);
|
|
_isLoading = false;
|
|
});
|
|
}
|
|
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
if (_isLoading) {
|
|
return Scaffold(body: Center(child: CircularProgressIndicator()));
|
|
}
|
|
|
|
return Scaffold(
|
|
appBar: AppBar(
|
|
title: const Text("请登录(模板)", style: TextStyle(color: Colors.white)),
|
|
centerTitle: true,
|
|
backgroundColor: primaryColor,
|
|
),
|
|
body: Center(
|
|
child: Column(
|
|
children: [
|
|
//const Text("测试程序,禁止用于正式环境", style: TextStyle(color: Colors.redAccent)),
|
|
// Padding(
|
|
// padding: const EdgeInsets.only(
|
|
// top: 120,
|
|
// left: 50,
|
|
// right: 50,
|
|
// bottom: 10
|
|
// ),
|
|
// child: TextField(
|
|
// controller: _userId,
|
|
// decoration: const InputDecoration(
|
|
// labelText: "用户名:",
|
|
// ),
|
|
// ),
|
|
// ),
|
|
// Padding(
|
|
// padding: const EdgeInsets.only(
|
|
// top: 0,
|
|
// left: 50,
|
|
// right: 50,
|
|
// bottom: 10
|
|
// ),
|
|
// child: TextField(
|
|
// controller: _userPwd,
|
|
// decoration: const InputDecoration(
|
|
// labelText: "密码:",
|
|
// ),
|
|
// obscureText: true,
|
|
// ),
|
|
// ),
|
|
Padding(
|
|
padding: const EdgeInsets.only(top: 15),
|
|
child: SizedBox(
|
|
width: 250,
|
|
child: ElevatedButton(
|
|
onPressed: login,
|
|
style: ButtonStyle(
|
|
backgroundColor: MaterialStateProperty.all(primaryColor),
|
|
),
|
|
child: const Text(
|
|
"进入系统",
|
|
style: TextStyle(color: Colors.white),
|
|
),
|
|
),
|
|
),
|
|
),
|
|
],
|
|
),
|
|
),
|
|
);
|
|
}
|
|
|
|
void login() {
|
|
Navigator.of(context).pushAndRemoveUntil(
|
|
MaterialPageRoute(builder: (context) => const Home()),
|
|
(router) => false,
|
|
);
|
|
}
|
|
|
|
@override
|
|
void dispose() {
|
|
_userPwd.dispose();
|
|
_userId.dispose();
|
|
super.dispose();
|
|
}
|
|
}
|