pda_template/lib/features/page/presentation/login.dart

120 lines
3.3 KiB
Dart
Raw Normal View History

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();
}
}