UserPage.dart 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. import 'package:flutter/material.dart';
  2. import 'package:flutter_habit/common/utils/ConvertUtils.dart';
  3. import 'package:flutter_habit/common/I18N.dart';
  4. import 'package:flutter_habit/provider/UserProvider.dart';
  5. import 'package:flutter_habit/view/drawer/user/setting/UserSettingPage.dart';
  6. import 'package:flutter_habit/view/drawer/user/sign/SignInPage.dart';
  7. import 'package:provider/provider.dart';
  8. class UserPage extends StatelessWidget {
  9. @override
  10. Widget build(BuildContext context) {
  11. UserProvider userProvider =
  12. Provider.of<UserProvider>(context, listen: true);
  13. return Scaffold(
  14. appBar: AppBar(
  15. title: Text(I18N.of("用户")),
  16. ),
  17. body: Padding(
  18. padding: EdgeInsets.all(16),
  19. child: ListView(
  20. children: userProvider.token == null
  21. ? unSignInWidgets(context)
  22. : signInWidgets(context),
  23. ),
  24. ),
  25. );
  26. }
  27. List<Widget> unSignInWidgets(BuildContext context) {
  28. return [
  29. Center(
  30. child: Icon(
  31. Icons.account_circle,
  32. size: 150,
  33. color: Theme.of(context).unselectedWidgetColor,
  34. ),
  35. ),
  36. Center(
  37. child: Text(
  38. I18N.of("未登录"),
  39. style: Theme.of(context).textTheme.titleLarge,
  40. ),
  41. ),
  42. Divider(),
  43. ListTile(
  44. leading: Icon(Icons.input),
  45. title: Text(I18N.of("登录")),
  46. trailing: Icon(Icons.chevron_right),
  47. onTap: () {
  48. Navigator.of(context)
  49. .push(MaterialPageRoute(builder: (_) => SignInPage()));
  50. },
  51. ),
  52. ];
  53. }
  54. List<Widget> signInWidgets(BuildContext context) {
  55. UserProvider userProvider =
  56. Provider.of<UserProvider>(context, listen: true);
  57. return [
  58. Center(
  59. child: userProvider.photo == null
  60. ? Icon(
  61. Icons.account_circle,
  62. size: 150,
  63. color: Theme.of(context).unselectedWidgetColor,
  64. )
  65. : ClipOval(
  66. child: Image.memory(
  67. userProvider.photo!,
  68. width: 150,
  69. height: 150,
  70. ),
  71. ),
  72. ),
  73. ListTile(
  74. leading: Icon(Icons.account_box),
  75. title: Text(I18N.of("用户名")),
  76. trailing: Text(ConvertUtils.packString(userProvider.userName)),
  77. ),
  78. ListTile(
  79. leading: Icon(Icons.format_list_numbered),
  80. title: Text(I18N.of("ID")),
  81. trailing: Text(userProvider.uid.toString()),
  82. ),
  83. ListTile(
  84. leading: Icon(Icons.email),
  85. title: Text(I18N.of("邮箱")),
  86. trailing: Text(userProvider.email.toString()),
  87. ),
  88. ListTile(
  89. leading: Icon(Icons.supervisor_account),
  90. title: Text(I18N.of("性别")),
  91. trailing: Text(ConvertUtils.packString(I18N.of(userProvider.gender))),
  92. ),
  93. ListTile(
  94. leading: Icon(Icons.cake),
  95. title: Text(I18N.of("生日")),
  96. trailing: Text(ConvertUtils.packString(userProvider.birthday)),
  97. ),
  98. ListTile(
  99. leading: Icon(Icons.monetization_on),
  100. title: Text(I18N.of("金币")),
  101. trailing: Text(userProvider.coins.toString()),
  102. ),
  103. Divider(),
  104. ListTile(
  105. leading: Icon(Icons.settings),
  106. title: Text(I18N.of("用户设置")),
  107. trailing: Icon(Icons.chevron_right),
  108. onTap: () {
  109. Navigator.of(context)
  110. .push(MaterialPageRoute(builder: (_) => UserSettingPage()));
  111. },
  112. ),
  113. ];
  114. }
  115. }