Hibok
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

141 regels
4.3 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. textScaleFactor: 1.0,
  61. maxLines: 2,
  62. overflow: TextOverflow.ellipsis,
  63. style: TextStyle(fontSize: 15),
  64. ),
  65. );
  66. var tips = Container(
  67. margin: EdgeInsets.only(top: 16, bottom: 20.5),
  68. alignment: Alignment.center,
  69. width: Screen.width,
  70. child: Text(
  71. I18n.of(context).total_members.replaceFirst(
  72. '/s1', widget.groupInfoModel.getMembersInGroup().length.toString()),
  73. textScaleFactor: 1.0,
  74. style: TextStyle(fontSize: 15.5, color: const Color(0xFF6F6F6F)),
  75. ),
  76. );
  77. var divder = Container(
  78. width: Screen.width,
  79. margin: EdgeInsets.symmetric(horizontal: 16.5),
  80. decoration: BoxDecoration(border: Border(top: Constants.GreyBorderSide)),
  81. );
  82. return Container(
  83. color: Colors.white,
  84. width: Screen.width,
  85. // margin: EdgeInsets.only(top: 11),
  86. child: SingleChildScrollView(
  87. child: Column(
  88. children: <Widget>[
  89. headImg,
  90. name,
  91. tips,
  92. divder,
  93. ///确认邀请
  94. Container(
  95. color: Colors.white,
  96. padding: EdgeInsets.only(top: 11, bottom: 11),
  97. child: GestureDetector(
  98. onTap: isInGroup
  99. ? null
  100. : () {
  101. MsgHandler.joinGroup(widget.groupInfoModel.sessionId);
  102. },
  103. child: Container(
  104. height: 44.5,
  105. margin: EdgeInsets.symmetric(horizontal: 40, vertical: 40),
  106. alignment: Alignment.center,
  107. decoration: BoxDecoration(
  108. color: isInGroup ? Colors.grey : Color(0xff2685FA),
  109. borderRadius: BorderRadius.all(Radius.circular(6))),
  110. child: Text(
  111. isInGroup
  112. ? I18n.of(context).joined
  113. : I18n.of(context).join_now,
  114. textScaleFactor: 1.0,
  115. style: TextStyle(color: Colors.white, fontSize: 16),
  116. ),
  117. ),
  118. )),
  119. ],
  120. ),
  121. ),
  122. );
  123. }
  124. @override
  125. void dispose() {
  126. super.dispose();
  127. }
  128. }