modify password setting

This commit is contained in:
niuhuan 2022-02-25 14:31:25 +08:00
parent 8c8b5d7f51
commit f62ee8d55b
5 changed files with 157 additions and 3 deletions

View File

@ -543,7 +543,12 @@ func updatePassword(params string) (string, error) {
if err != nil {
return "", err
}
return "", client.UpdatePassword(paramsStruct.OldPassword, paramsStruct.NewPassword)
err = client.UpdatePassword(paramsStruct.OldPassword, paramsStruct.NewPassword)
if err != nil {
return "", err
}
setPassword(paramsStruct.NewPassword)
return "", nil
}
func updateSlogan(slogan string) (string, error) {

View File

@ -698,4 +698,11 @@ class Method {
return await _flatInvoke("updateAvatar", data);
}
///
Future updatePassword(String oldPassword, String newPassword) {
return _flatInvoke("updatePassword", {
"oldPassword": oldPassword,
"newPassword": newPassword,
});
}
}

View File

@ -54,7 +54,6 @@ class _AccountScreenState extends State<AccountScreen> {
Widget _buildGui() {
return Scaffold(
appBar: AppBar(
brightness: Brightness.dark,
title: Text('配置选项'),
actions: [
IconButton(

View File

@ -0,0 +1,131 @@
import 'package:flutter/material.dart';
import 'package:pikapika/basic/Method.dart';
import 'package:pikapika/screens/components/ContentLoading.dart';
import '../basic/Common.dart';
class ModifyPasswordScreen extends StatefulWidget {
@override
State<StatefulWidget> createState() => _ModifyPasswordScreenState();
}
class _ModifyPasswordScreenState extends State<ModifyPasswordScreen> {
late bool _loading = false;
late String _oldPassword = "";
late String _newPassword = "";
late String _newPasswordRep = "";
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text("修改密码"),
),
body: _loading
? Stack(
children: [
ContentLoading(label: "请稍后"),
WillPopScope(
child: Container(),
onWillPop: () async {
return false;
},
),
],
)
: _buildForm(),
);
}
Widget _buildForm() {
return ListView(
children: [
const Divider(),
ListTile(
title: Text("旧密码"),
subtitle: Text(_oldPassword == "" ? "未填写" : '\u2022' * 10),
onTap: () async {
String? input = await displayTextInputDialog(
context,
src: _oldPassword,
title: '旧密码',
hint: '请输入旧密码',
isPasswd: true,
);
if (input != null) {
setState(() {
_oldPassword = input;
});
}
},
),
const Divider(),
ListTile(
title: Text("新密码"),
subtitle: Text(_newPassword == "" ? "未填写" : '\u2022' * 10),
onTap: () async {
String? input = await displayTextInputDialog(
context,
src: _newPassword,
title: '新密码',
hint: '请输入新密码',
isPasswd: true,
);
if (input != null) {
setState(() {
_newPassword = input;
});
}
},
),
const Divider(),
ListTile(
title: Text("重复输入新密码"),
subtitle: Text(_newPasswordRep == "" ? "未填写" : '\u2022' * 10),
onTap: () async {
String? input = await displayTextInputDialog(
context,
src: _newPasswordRep,
title: '重复输入新密码',
hint: '请重复输入新密码',
isPasswd: true,
);
if (input != null) {
setState(() {
_newPasswordRep = input;
});
}
},
),
const Divider(),
Container(
margin: EdgeInsets.all(10),
child: MaterialButton(
textColor: Colors.white,
color: Theme.of(context).appBarTheme.backgroundColor,
onPressed: () async {
if (_newPasswordRep != _newPassword) {
defaultToast(context, "新密码不匹配");
return;
}
setState(() {
_loading = true;
});
try {
await method.updatePassword(_oldPassword, _newPassword);
defaultToast(context, "修改成功");
Navigator.of(context).pop();
} catch (e) {
defaultToast(context, "失败 : $e");
setState(() {
_loading = false;
});
}
},
child: Text("确认"),
),
),
],
);
}
}

View File

@ -16,10 +16,10 @@ import 'package:pikapika/basic/config/FullScreenUI.dart';
import 'package:pikapika/basic/config/KeyboardController.dart';
import 'package:pikapika/basic/config/NoAnimation.dart';
import 'package:pikapika/basic/config/PagerAction.dart';
import 'package:pikapika/basic/config/Quality.dart';
import 'package:pikapika/basic/config/ReaderDirection.dart';
import 'package:pikapika/basic/config/ReaderSliderPosition.dart';
import 'package:pikapika/basic/config/ReaderType.dart';
import 'package:pikapika/basic/config/Quality.dart';
import 'package:pikapika/basic/config/ShadowCategories.dart';
import 'package:pikapika/basic/config/Themes.dart';
import 'package:pikapika/basic/config/TimeOffsetHour.dart';
@ -30,6 +30,7 @@ import 'package:pikapika/screens/components/NetworkSetting.dart';
import 'CleanScreen.dart';
import 'MigrateScreen.dart';
import 'ModifyPasswordScreen.dart';
class SettingsScreen extends StatelessWidget {
@override
@ -37,6 +38,17 @@ class SettingsScreen extends StatelessWidget {
appBar: AppBar(title: Text('设置')),
body: ListView(
children: [
Divider(),
ListTile(
onTap: () async {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => ModifyPasswordScreen()),
);
},
title: Text('修改密码'),
),
Divider(),
NetworkSetting(),
Divider(),