Hibok
Nie możesz wybrać więcej, niż 25 tematów Tematy muszą się zaczynać od litery lub cyfry, mogą zawierać myślniki ('-') i mogą mieć do 35 znaków.
 
 
 
 
 
 

138 wiersze
4.2 KiB

  1. import 'package:chat/data/UserData.dart';
  2. import 'package:chat/data/constants.dart';
  3. import 'package:chat/generated/i18n.dart';
  4. import 'package:chat/models/group_info_model.dart';
  5. import 'package:chat/utils/CustomUI.dart';
  6. import 'package:chat/utils/image_util.dart';
  7. import 'package:chat/utils/msgHandler.dart';
  8. import 'package:chat/utils/screen.dart';
  9. import 'package:flutter/material.dart';
  10. import 'package:chat/models/ref_name_provider.dart';
  11. import 'package:provider/provider.dart';
  12. class JoinGroupConfirmPage extends StatefulWidget {
  13. final GroupInfoModel groupInfoModel;
  14. JoinGroupConfirmPage({Key key, @required this.groupInfoModel})
  15. : super(key: key);
  16. @override
  17. _JoinGroupConfirmPageState createState() => new _JoinGroupConfirmPageState();
  18. }
  19. class _JoinGroupConfirmPageState extends State<JoinGroupConfirmPage> {
  20. bool isInGroup = false;
  21. @override
  22. void initState() {
  23. super.initState();
  24. isInGroup =
  25. widget.groupInfoModel.isGroupMember(UserData().basicInfo.userId);
  26. }
  27. @override
  28. Widget build(BuildContext context) {
  29. Widget appBar = new AppBar(
  30. title: new Text(
  31. I18n.of(context).join_group,
  32. textScaleFactor: 1.0,
  33. ),
  34. leading: CustomUI.buildCustomLeading(context),
  35. centerTitle: true,
  36. );
  37. return Scaffold(
  38. appBar: appBar,
  39. body: SafeArea(
  40. child: _buildBody(),
  41. ));
  42. }
  43. GlobalKey key = GlobalKey();
  44. Widget _buildBody() {
  45. Map refMap = Provider.of<RefNameProvider>(context).refMap;
  46. double width = 52;
  47. var headImg = Container(
  48. margin: EdgeInsets.only(top: 9),
  49. width: width,
  50. height: width,
  51. child: WidgetUtil.getAvatarNew(widget.groupInfoModel, key, (path) {
  52. widget.groupInfoModel.image = path;
  53. }));
  54. var name = Container(
  55. margin: EdgeInsets.only(top: 8.5),
  56. alignment: Alignment.center,
  57. width: Screen.width - 40,
  58. child: Text(
  59. widget.groupInfoModel.getGroupName(refMap),
  60. maxLines: 2,
  61. overflow: TextOverflow.ellipsis,
  62. style: TextStyle(fontSize: 15),
  63. ),
  64. );
  65. var tips = Container(
  66. margin: EdgeInsets.only(top: 16, bottom: 20.5),
  67. alignment: Alignment.center,
  68. width: Screen.width,
  69. child: Text(
  70. I18n.of(context).total_members.replaceFirst(
  71. '/s1', widget.groupInfoModel.getMembersInGroup().length.toString()),
  72. style: TextStyle(fontSize: 15.5, color: const Color(0xFF6F6F6F)),
  73. ),
  74. );
  75. var divder = Container(
  76. width: Screen.width,
  77. margin: EdgeInsets.symmetric(horizontal: 16.5),
  78. decoration: BoxDecoration(border: Border(top: Constants.GreyBorderSide)),
  79. );
  80. return Container(
  81. color: Colors.white,
  82. width: Screen.width,
  83. // margin: EdgeInsets.only(top: 11),
  84. child: SingleChildScrollView(
  85. child: Column(
  86. children: <Widget>[
  87. headImg,
  88. name,
  89. tips,
  90. divder,
  91. ///确认邀请
  92. Container(
  93. color: Colors.white,
  94. padding: EdgeInsets.only(top: 11, bottom: 11),
  95. child: GestureDetector(
  96. onTap: isInGroup
  97. ? null
  98. : () {
  99. MsgHandler.joinGroup(widget.groupInfoModel.sessionId);
  100. },
  101. child: Container(
  102. height: 44.5,
  103. margin: EdgeInsets.symmetric(horizontal: 40, vertical: 40),
  104. alignment: Alignment.center,
  105. decoration: BoxDecoration(
  106. color: isInGroup ? Colors.grey : Color(0xff2685FA),
  107. borderRadius: BorderRadius.all(Radius.circular(6))),
  108. child: Text(
  109. isInGroup
  110. ? I18n.of(context).joined
  111. : I18n.of(context).join_now,
  112. style: TextStyle(color: Colors.white, fontSize: 16),
  113. ),
  114. ),
  115. )),
  116. ],
  117. ),
  118. ),
  119. );
  120. }
  121. @override
  122. void dispose() {
  123. super.dispose();
  124. }
  125. }