import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:qinglong_app/base/http/api.dart'; import 'package:qinglong_app/base/http/http.dart'; import 'package:qinglong_app/base/ql_app_bar.dart'; import 'package:qinglong_app/base/routes.dart'; import 'package:qinglong_app/base/userinfo_viewmodel.dart'; import 'package:qinglong_app/module/task/task_bean.dart'; import 'package:qinglong_app/module/task/task_viewmodel.dart'; import 'package:qinglong_app/utils/extension.dart'; import '../../main.dart'; class UpdatePasswordPage extends ConsumerStatefulWidget { const UpdatePasswordPage({ Key? key, }) : super(key: key); @override ConsumerState createState() => _UpdatePasswordPageState(); } class _UpdatePasswordPageState extends ConsumerState { final TextEditingController _nameController = TextEditingController(); final TextEditingController _passwordController = TextEditingController(); final TextEditingController _passwordAgainController = TextEditingController(); FocusNode focusNode = FocusNode(); @override void initState() { super.initState(); WidgetsBinding.instance?.addPostFrameCallback( (timeStamp) { focusNode.requestFocus(); }, ); } @override Widget build(BuildContext context) { return Scaffold( appBar: QlAppBar( canBack: true, backCall: () { Navigator.of(context).pop(); }, title: "修改用户名密码", actions: [ InkWell( onTap: () { submit(); }, child: const Padding( padding: EdgeInsets.symmetric( horizontal: 15, ), child: Center( child: Text( "提交", style: TextStyle( color: Colors.white, fontSize: 16, ), ), ), ), ) ], ), body: Column( mainAxisSize: MainAxisSize.min, crossAxisAlignment: CrossAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.start, children: [ Padding( padding: const EdgeInsets.symmetric( horizontal: 15, ), child: Column( mainAxisSize: MainAxisSize.min, crossAxisAlignment: CrossAxisAlignment.start, children: [ const SizedBox( height: 15, ), const Text( "用户名:", style: TextStyle( fontSize: 16, fontWeight: FontWeight.w600, ), ), TextField( focusNode: focusNode, controller: _nameController, decoration: const InputDecoration( contentPadding: EdgeInsets.fromLTRB(0, 5, 0, 5), hintText: "请输入用户名", ), autofocus: false, ), ], ), ), Padding( padding: const EdgeInsets.symmetric( horizontal: 15, ), child: Column( mainAxisSize: MainAxisSize.min, crossAxisAlignment: CrossAxisAlignment.start, children: [ const SizedBox( height: 15, ), const Text( "新密码:", style: TextStyle( fontSize: 16, fontWeight: FontWeight.w600, ), ), TextField( obscureText: true, controller: _passwordController, maxLines: 1, decoration: const InputDecoration( contentPadding: EdgeInsets.fromLTRB(0, 5, 0, 5), hintText: "请输入新密码", ), autofocus: false, ), ], ), ), Padding( padding: const EdgeInsets.symmetric( horizontal: 15, ), child: Column( mainAxisSize: MainAxisSize.min, crossAxisAlignment: CrossAxisAlignment.start, children: [ const SizedBox( height: 15, ), const Text( "再次输入新密码:", style: TextStyle( fontSize: 16, fontWeight: FontWeight.w600, ), ), TextField( obscureText: true, maxLines: 1, controller: _passwordAgainController, decoration: const InputDecoration( contentPadding: EdgeInsets.fromLTRB(0, 5, 0, 5), hintText: "再次输入新密码", ), autofocus: false, ), ], ), ), ], ), ); } void submit() async { if (_nameController.text.isEmpty) { "用户名不能为空".toast(); return; } if (_passwordController.text.isEmpty || _passwordAgainController.text.isEmpty) { "密码不能为空".toast(); return; } if (_passwordAgainController.text != _passwordController.text) { "两次输入的密码不一致".toast(); return; } commitReal(); } void commitReal() async { String name = _nameController.text; String password = _passwordController.text; HttpResponse response = await Api.updatePassword(name, password); if (response.success) { "更新成功".toast(); if (!getIt().useSecretLogined) { getIt().updateUserName( getIt().host ?? "", name, password, false); } Navigator.of(context) .pushNamedAndRemoveUntil(Routes.routeLogin, (route) => false); } else { response.message.toast(); } } }