Hibok
Nevar pievienot vairāk kā 25 tēmas Tēmai ir jāsākas ar burtu vai ciparu, tā var saturēt domu zīmes ('-') un var būt līdz 35 simboliem gara.
 
 
 
 
 
 

176 rindas
5.1 KiB

  1. import 'package:cached_network_image/cached_network_image.dart';
  2. import 'package:chat/data/constants.dart';
  3. import 'package:chat/generated/i18n.dart';
  4. import 'package:chat/utils/CustomUI.dart';
  5. import 'package:chat/utils/group_member_model.dart';
  6. import 'package:chat/utils/msgHandler.dart';
  7. import 'package:chat/utils/screen.dart';
  8. import 'package:flutter/material.dart';
  9. class InviteDetailPage extends StatefulWidget {
  10. final List<GroupMemberModel> originalList;
  11. final GroupMemberModel opt;
  12. final int groupId;
  13. InviteDetailPage(
  14. {Key key, @required this.originalList, @required this.opt, this.groupId})
  15. : super(key: key);
  16. @override
  17. _InviteDetailPageState createState() => new _InviteDetailPageState();
  18. }
  19. class _InviteDetailPageState extends State<InviteDetailPage> {
  20. @override
  21. void initState() {
  22. super.initState();
  23. }
  24. @override
  25. Widget build(BuildContext context) {
  26. Widget appBar = new AppBar(
  27. title: new Text(
  28. I18n.of(context).invite_detail,
  29. textScaleFactor: 1.0,
  30. ),
  31. leading: CustomUI.buildCustomLeading(context),
  32. centerTitle: true,
  33. );
  34. return Scaffold(
  35. appBar: appBar,
  36. body: SafeArea(
  37. child: _buildBody(),
  38. ));
  39. }
  40. Widget _buildBody() {
  41. var headImg = Container(
  42. margin: EdgeInsets.only(top: 9),
  43. child: ClipRRect(
  44. borderRadius: BorderRadius.circular(6),
  45. child: CachedNetworkImage(
  46. imageUrl: widget.opt.avtar,
  47. width: 61,
  48. height: 61,
  49. )));
  50. var name = Container(
  51. margin: EdgeInsets.only(top: 8.5),
  52. alignment: Alignment.center,
  53. width: Screen.width,
  54. child: Text(
  55. widget.opt.nickName,
  56. style: TextStyle(fontSize: 15),
  57. ),
  58. );
  59. var tips = Container(
  60. margin: EdgeInsets.only(top: 16, bottom: 20.5),
  61. alignment: Alignment.center,
  62. width: Screen.width,
  63. child: Text(
  64. I18n.of(context)
  65. .invite_members
  66. .replaceFirst('/s1', widget.originalList.length.toString()),
  67. style: TextStyle(fontSize: 15.5),
  68. ),
  69. );
  70. var divder = Container(
  71. width: Screen.width,
  72. margin: EdgeInsets.symmetric(horizontal: 16.5),
  73. decoration: BoxDecoration(border: Border(top: Constants.GreyBorderSide)),
  74. );
  75. return Container(
  76. color: Colors.white,
  77. width: Screen.width,
  78. margin: EdgeInsets.only(top: 11),
  79. child: ListView(
  80. children: <Widget>[
  81. headImg,
  82. name,
  83. tips,
  84. divder,
  85. _buildList(),
  86. ///确认邀请
  87. Container(
  88. color: Colors.white,
  89. padding: EdgeInsets.only(top: 11, bottom: 11),
  90. child: GestureDetector(
  91. onTap: () {
  92. List<int> idList = [];
  93. for (int k = 0; k < widget.originalList.length; k++) {
  94. idList.add(widget.originalList[k].memberId);
  95. }
  96. MsgHandler.agreeMember(widget.groupId, idList);
  97. Navigator.pop(context);
  98. },
  99. child: Container(
  100. height: 44.5,
  101. margin: EdgeInsets.symmetric(horizontal: 40, vertical: 40),
  102. alignment: Alignment.center,
  103. decoration: BoxDecoration(
  104. color: Color(0xff2685FA),
  105. borderRadius: BorderRadius.all(Radius.circular(6))),
  106. child: Text(
  107. I18n.of(context).determine,
  108. style: TextStyle(color: Colors.white, fontSize: 16),
  109. ),
  110. ),
  111. )),
  112. ],
  113. ),
  114. );
  115. }
  116. Widget _buildList() {
  117. List<Widget> list = [];
  118. // List userList = [];
  119. // for (int i = 0; i < 30; i++) {
  120. // userList.add({
  121. // 'headImg': UserData().basicInfo.headimgurl,
  122. // 'userName': UserData().basicInfo.nickName
  123. // });
  124. // }
  125. widget.originalList
  126. .forEach((f) => list.add(_buildUserInfo(f.avtar, f.nickName)));
  127. return Container(
  128. child: Wrap(crossAxisAlignment: WrapCrossAlignment.start, children: list),
  129. );
  130. }
  131. Widget _buildUserInfo(String headImg, String username) {
  132. return Container(
  133. width: Screen.width / 5,
  134. child: Column(
  135. children: <Widget>[
  136. Container(
  137. margin: EdgeInsets.only(top: 18),
  138. child: ClipRRect(
  139. borderRadius: BorderRadius.circular(6),
  140. child: CachedNetworkImage(
  141. imageUrl: headImg,
  142. width: 42.5,
  143. height: 42.5,
  144. ))),
  145. Container(
  146. margin: EdgeInsets.only(top: 8.5),
  147. child: Text(
  148. username,
  149. style: TextStyle(fontSize: 10.3, color: Constants.GreyTextColor),
  150. ),
  151. )
  152. ],
  153. ),
  154. );
  155. }
  156. @override
  157. void dispose() {
  158. super.dispose();
  159. }
  160. }