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.
 
 
 
 
 
 

127 line
4.3 KiB

  1. import 'dart:convert';
  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/screen.dart';
  8. import 'package:flutter/material.dart';
  9. import 'package:qr_flutter/qr_flutter.dart';
  10. import 'package:chat/models/ref_name_provider.dart';
  11. import 'package:provider/provider.dart';
  12. class GroupQrPage extends StatelessWidget {
  13. final GroupInfoModel groupInfoModel;
  14. GroupQrPage(this.groupInfoModel);
  15. @override
  16. Widget build(BuildContext context) {
  17. print('groupInfoModel.askSwitch ${groupInfoModel.askSwitch}');
  18. DateTime today = DateTime.now();
  19. DateTime fiftyDaysFromNow = today.add(new Duration(days: 7));
  20. String dayTips = I18n.of(context).group_qr_code_tips;
  21. dayTips = dayTips.replaceAll('/s1', fiftyDaysFromNow.month.toString());
  22. dayTips = dayTips.replaceAll('/s2', fiftyDaysFromNow.day.toString());
  23. return Scaffold(
  24. appBar: AppBar(
  25. backgroundColor: AppColors.NewAppbarBgColor,
  26. title: new Text(
  27. I18n.of(context).group_qr_code,
  28. style: TextStyle(color: AppColors.NewAppbarTextColor),
  29. textScaleFactor: 1.0,
  30. ),
  31. centerTitle: true,
  32. leading: CustomUI.buildCustomLeading(context),
  33. ),
  34. body: Center(
  35. child: Container(
  36. margin: EdgeInsets.fromLTRB(28, 0, 28, 0),
  37. decoration: BoxDecoration(
  38. color: Colors.white,
  39. borderRadius: BorderRadius.circular(6),
  40. ),
  41. child: Column(
  42. mainAxisSize: MainAxisSize.min,
  43. children: <Widget>[
  44. _head(context),
  45. _qrImg(context),
  46. Container(
  47. padding: EdgeInsets.all(20),
  48. child: Text(
  49. dayTips,
  50. textScaleFactor: 1.0,
  51. style: TextStyle(fontSize: 9),
  52. ),
  53. )
  54. ],
  55. ),
  56. )));
  57. }
  58. _qrImg(context) {
  59. //var headImg = UserData().basicInfo.headimgurl;
  60. final size = Screen.width * 0.7;
  61. var dayAfter =
  62. new DateTime.now().add(new Duration(days: 7)).millisecondsSinceEpoch;
  63. print('groupInfoModel.sessionId ${groupInfoModel.sessionId}');
  64. final groupIdAndTime =
  65. 'type=1&sessionId=${groupInfoModel.sessionId}&expirationTime=$dayAfter';
  66. var encodeStr = base64Encode(utf8.encode(groupIdAndTime));
  67. return Stack(
  68. children: <Widget>[
  69. QrImage(
  70. data: 'https://henho.jphgames.com/?$encodeStr',
  71. version: QrVersions.auto,
  72. size: size,
  73. ),
  74. groupInfoModel.askSwitch == 0
  75. ? Positioned.fill(child: Container())
  76. : Positioned.fill(
  77. child: Container(
  78. // height: size,
  79. padding: EdgeInsets.only(left: 20, right: 20),
  80. alignment: Alignment.center,
  81. color: Color(0xf7FFFFFF),
  82. child: Text(
  83. I18n.of(context).group_open_verification,
  84. textScaleFactor: 1.0,
  85. style: TextStyle(color: Color(0xff696969), fontSize: 20),
  86. ),
  87. ))
  88. ],
  89. );
  90. }
  91. _head(BuildContext context) {
  92. Map refMap = Provider.of<RefNameProvider>(context).refMap;
  93. var name = groupInfoModel.getGroupName(refMap);
  94. return Container(
  95. padding: EdgeInsets.all(20),
  96. child: Row(
  97. children: <Widget>[
  98. ClipRRect(
  99. borderRadius: BorderRadius.circular(10),
  100. child: WidgetUtil.getAvatarNew(groupInfoModel, key, (path) {
  101. groupInfoModel.image = path;
  102. })),
  103. SizedBox(width: 10),
  104. Expanded(
  105. child: Text(name,
  106. textScaleFactor: 1.0,
  107. maxLines: 2,
  108. overflow: TextOverflow.ellipsis,
  109. style: TextStyle(
  110. color: Constants.BlackTextColor,
  111. fontWeight: FontWeight.w500,
  112. fontSize: 16)))
  113. ],
  114. ));
  115. }
  116. }