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.
 
 
 
 
 
 

125 wiersze
4.2 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. style: TextStyle(fontSize: 9),
  51. ),
  52. )
  53. ],
  54. ),
  55. )));
  56. }
  57. _qrImg(context) {
  58. //var headImg = UserData().basicInfo.headimgurl;
  59. final size = Screen.width * 0.7;
  60. var dayAfter =
  61. new DateTime.now().add(new Duration(days: 7)).millisecondsSinceEpoch;
  62. print('groupInfoModel.sessionId ${groupInfoModel.sessionId}');
  63. final groupIdAndTime =
  64. 'type=1&sessionId=${groupInfoModel.sessionId}&expirationTime=$dayAfter';
  65. var encodeStr = base64Encode(utf8.encode(groupIdAndTime));
  66. return Stack(
  67. children: <Widget>[
  68. QrImage(
  69. data: 'https://henho.jphgames.com/?$encodeStr',
  70. version: QrVersions.auto,
  71. size: size,
  72. ),
  73. groupInfoModel.askSwitch == 0
  74. ? Positioned.fill(child: Container())
  75. : Positioned.fill(
  76. child: Container(
  77. // height: size,
  78. padding: EdgeInsets.only(left: 20, right: 20),
  79. alignment: Alignment.center,
  80. color: Color(0xf7FFFFFF),
  81. child: Text(
  82. I18n.of(context).group_open_verification,
  83. style: TextStyle(color: Color(0xff696969), fontSize: 20),
  84. ),
  85. ))
  86. ],
  87. );
  88. }
  89. _head(BuildContext context) {
  90. Map refMap = Provider.of<RefNameProvider>(context).refMap;
  91. var name = groupInfoModel.getGroupName(refMap);
  92. return Container(
  93. padding: EdgeInsets.all(20),
  94. child: Row(
  95. children: <Widget>[
  96. ClipRRect(
  97. borderRadius: BorderRadius.circular(10),
  98. child: WidgetUtil.getAvatarNew(groupInfoModel, key, (path) {
  99. groupInfoModel.image = path;
  100. })),
  101. SizedBox(width: 10),
  102. Expanded(
  103. child: Text(name,
  104. textScaleFactor: 1.0,
  105. maxLines: 2,
  106. overflow: TextOverflow.ellipsis,
  107. style: TextStyle(
  108. color: Constants.BlackTextColor,
  109. fontWeight: FontWeight.w500,
  110. fontSize: 16)))
  111. ],
  112. ));
  113. }
  114. }