account_edit.dart 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155
  1. import 'package:bot_toast/bot_toast.dart';
  2. import 'package:flutter/material.dart';
  3. import 'package:provider/provider.dart';
  4. import 'package:twong/api/index.dart';
  5. import 'package:twong/config/style.dart';
  6. import 'package:twong/providers/user.dart';
  7. import 'package:twong/utils/index.dart';
  8. import 'package:twong/widgets/app_bar.dart';
  9. import 'package:twong/widgets/counter_botton.dart';
  10. class AccountEditPage extends StatefulWidget {
  11. final int type;
  12. AccountEditPage(this.type);
  13. @override
  14. State<StatefulWidget> createState() {
  15. return _AccountEditState();
  16. }
  17. }
  18. class _AccountEditState extends State<AccountEditPage> {
  19. List _widgets;
  20. FocusNode _firstNode = FocusNode();
  21. List _titles = ["修改昵称", "修改密码"];
  22. TextEditingController _firstCtrl = TextEditingController();
  23. @override
  24. initState() {
  25. super.initState();
  26. _widgets = [_nickEdit, _passEdit];
  27. }
  28. Widget get _nickEdit {
  29. _firstCtrl.text = Cache.user.nickname;
  30. // FocusScope.of(context).requestFocus(_firstNode);
  31. return Column(
  32. children: [
  33. Container(
  34. padding: EdgeInsets.all(6.px),
  35. child: Row(
  36. children: [
  37. Text("昵称"),
  38. Expanded(child: Container(
  39. margin: EdgeInsets.only(left: 24.px),
  40. child: TextField(
  41. focusNode: _firstNode,
  42. controller: _firstCtrl,
  43. cursorColor: DColors.Main,
  44. decoration: InputDecoration(
  45. border: InputBorder.none
  46. ),
  47. ),
  48. ))
  49. ],
  50. ),
  51. ),
  52. Divider()
  53. ],
  54. );
  55. }
  56. Widget get _passEdit {
  57. return Column(
  58. children: [
  59. _buildItem("手机号", value: Consumer<UserModel>(
  60. builder: (context, model, child) =>
  61. Text("${Utils.encodeString(model.info.phone)}"),
  62. )),
  63. _buildItem("验证码", hit: "请输入手机验证码", child: CounterButton(
  64. onClick: _onGetCode,
  65. color: DColors.Main, disableColor: Colors.grey)),
  66. _buildItem("新密码", password: true, hit: "请输入新的密码"),
  67. _buildItem("密码确认", password: true, hit: "请再次输入新的密码"),
  68. ],
  69. );
  70. }
  71. bool _onGetCode() {
  72. return true;
  73. }
  74. Widget _buildItem(String key, { Widget child, bool password = false,
  75. String hit, Widget value }) {
  76. return Column(
  77. children: [
  78. Container(
  79. padding: EdgeInsets.all(6.px),
  80. child: Row(
  81. children: [
  82. Container(
  83. width: 68.px,
  84. child: Text(key),
  85. ),
  86. value == null ? Expanded(child: Container(
  87. child: TextField(
  88. obscureText: password,
  89. // focusNode: _firstNode,
  90. // controller: _firstCtrl,
  91. cursorColor: DColors.Main,
  92. decoration: InputDecoration(
  93. hintText: hit,
  94. border: InputBorder.none
  95. ),
  96. ),
  97. )) : value,
  98. child == null ? Container() : child
  99. ],
  100. ),
  101. ),
  102. Divider()
  103. ],
  104. );
  105. }
  106. _saveClick() {
  107. if(widget.type == 0) {
  108. Network.inst.editUser(nickname: _firstCtrl.text).then((res) {
  109. Provider.of<UserModel>(context, listen: false)
  110. .updateNickName(_firstCtrl.text);
  111. Navigator.pop(context);
  112. BotToast.showText(text: "保存成功");
  113. }).catchError((err) {
  114. Log.d(err);
  115. });
  116. }
  117. }
  118. @override
  119. Widget build(BuildContext context) {
  120. return Scaffold(
  121. appBar: DAppBar(_titles[widget.type]),
  122. body: Container(
  123. margin: EdgeInsets.only(left: 12.px, right: 12.px, top: 6.px),
  124. child: Column(
  125. children: [
  126. _widgets[widget.type],
  127. Container(
  128. margin: EdgeInsets.only(left: 32.px, right: 32.px),
  129. width: double.infinity,
  130. child: FlatButton(
  131. color: DColors.Main,
  132. shape: StadiumBorder(),
  133. onPressed: _saveClick,
  134. child: Text("保 存", style: TextStyle(color: Colors.white,
  135. fontSize: 14.px)),
  136. ),
  137. )
  138. ],
  139. ),
  140. ),
  141. );
  142. }
  143. }