account.dart 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. import 'package:cached_network_image/cached_network_image.dart';
  2. import 'package:flutter/material.dart';
  3. import 'package:image_picker/image_picker.dart';
  4. import 'package:provider/provider.dart';
  5. import 'package:twong/config/style.dart';
  6. import 'package:twong/providers/user.dart';
  7. import 'package:twong/router/index.dart';
  8. import 'package:twong/utils/index.dart';
  9. import 'package:twong/widgets/app_bar.dart';
  10. class AccountPage extends StatefulWidget {
  11. @override
  12. State<StatefulWidget> createState() {
  13. return _AccountState();
  14. }
  15. }
  16. class _AccountState extends State<AccountPage> {
  17. @override
  18. Widget build(BuildContext context) {
  19. return Scaffold(
  20. backgroundColor: DColors.back,
  21. appBar: DAppBar("账号信息"),
  22. body: SafeArea(
  23. child: Consumer<UserModel>(
  24. builder: (context, model, child) =>
  25. ListView(
  26. physics: ClampingScrollPhysics(),
  27. children: [
  28. _buildItem("头像", CircleAvatar(backgroundImage:
  29. CachedNetworkImageProvider(model.info.avatar),
  30. radius: 14.px), onClick: _openAction),
  31. _buildItem("昵称", Text(model.info.nickname), edit: 0),
  32. _buildItem("密码",
  33. Text("点击修改密码", style: TextStyle(color: Colors.grey)),
  34. edit: 1),
  35. _buildItem("手机号", Text(Utils.encodeString(model.info.phone)),
  36. right: false),
  37. _buildItem(
  38. "ID", Text(model.info.uid.toString()), right: false),
  39. ],
  40. ),
  41. ),
  42. ),
  43. );
  44. }
  45. Widget _buildItem(String key, Widget value, { bool right = true, int edit, Function onClick }) {
  46. return Column(
  47. children: [
  48. InkWell(
  49. highlightColor: Colors.transparent,
  50. onTap: () {
  51. if(onClick != null) {
  52. onClick();
  53. }
  54. if(edit != null) {
  55. Navigator.pushNamed(context,
  56. RouteNames.accountEdit, arguments: edit);
  57. }
  58. },
  59. child: Container(
  60. padding: EdgeInsets.all(6.px),
  61. margin: EdgeInsets.only(left: 12.px, right: 12.px),
  62. child: Row(
  63. children: [
  64. Expanded(child: Text(key)),
  65. value == null ? Container() : value,
  66. right ? Container(
  67. margin: EdgeInsets.only(left: 6.px),
  68. child: Icon(Icons.chevron_right, color: Colors.grey),
  69. ) : Container()
  70. ],
  71. ),
  72. ),
  73. ),
  74. Divider()
  75. ],
  76. );
  77. }
  78. Future _openAction() {
  79. var imgPicker = ImagePicker();
  80. return showModalBottomSheet(
  81. context: context,
  82. builder: (BuildContext context) {
  83. return SafeArea(child: Column(
  84. mainAxisSize: MainAxisSize.min,
  85. children: <Widget>[
  86. new ListTile(
  87. leading: Icon(Icons.photo_camera),
  88. title: Text("相机拍摄"),
  89. onTap: () async {
  90. var image = await imgPicker.getImage(
  91. source: ImageSource.camera);
  92. Navigator.pop(context);
  93. },
  94. ),
  95. new ListTile(
  96. leading: Icon(Icons.photo_library),
  97. title: Text("照片库"),
  98. onTap: () async {
  99. var image = await imgPicker.getImage(
  100. source: ImageSource.gallery);
  101. Navigator.pop(context);
  102. },
  103. ),
  104. ],
  105. ));
  106. });
  107. }
  108. }