Hibok
Du kan inte välja fler än 25 ämnen Ämnen måste starta med en bokstav eller siffra, kan innehålla bindestreck ('-') och vara max 35 tecken långa.
 
 
 
 
 
 

129 rader
4.3 KiB

  1. import 'dart:convert';
  2. import 'package:cached_network_image/cached_network_image.dart';
  3. import 'package:chat/data/UserData.dart';
  4. import 'package:chat/data/WebData.dart';
  5. import 'package:chat/data/constants.dart';
  6. import 'package:chat/generated/i18n.dart';
  7. import 'package:chat/models/ref_name_provider.dart';
  8. import 'package:chat/utils/screen.dart';
  9. import 'package:flutter/material.dart';
  10. import 'package:provider/provider.dart';
  11. import 'package:qr_flutter/qr_flutter.dart';
  12. class MyQr extends StatelessWidget {
  13. @override
  14. Widget build(BuildContext context) {
  15. return Container(
  16. alignment: Alignment.center,
  17. margin: EdgeInsets.only(top: 55.5, left: 25, right: 25),
  18. height: 400,
  19. decoration: BoxDecoration(
  20. color: Colors.white,
  21. borderRadius: BorderRadius.circular(10),
  22. ),
  23. child: Column(
  24. mainAxisSize: MainAxisSize.min,
  25. children: <Widget>[
  26. _head(context),
  27. _qrImg(),
  28. Container(
  29. padding: EdgeInsets.all(20),
  30. child: Text(
  31. I18n.of(context).scan_and_add,
  32. textScaleFactor: 1.0,
  33. style: TextStyle(fontSize: 12.5),
  34. ),
  35. )
  36. ],
  37. ),
  38. );
  39. }
  40. _qrImg() {
  41. //var headImg = UserData().basicInfo.headimgurl;
  42. final size = 205.5;
  43. var dayAfter =
  44. new DateTime.now().add(new Duration(minutes: 5)).millisecondsSinceEpoch;
  45. var myId = UserData().basicInfo.userId;
  46. final groupIdAndTime = 'type=0&sessionId=$myId&expirationTime=$dayAfter';
  47. var encodeStr = base64Encode(utf8.encode(groupIdAndTime));
  48. return QrImage(
  49. data: 'https://henho.jphgames.com/?$encodeStr',
  50. version: QrVersions.auto,
  51. size: size,
  52. );
  53. }
  54. _head(BuildContext context) {
  55. var userInfo = UserData().basicInfo;
  56. var headImg = userInfo.headimgurl;
  57. var name = Provider.of<RefNameProvider>(context)
  58. .getRefName(userInfo.userId, userInfo.nickName);
  59. var isMan = userInfo.sex == 1;
  60. var city = userInfo.city;
  61. var country = userInfo.country;
  62. return Container(
  63. padding: EdgeInsets.all(20),
  64. child: Row(
  65. children: <Widget>[
  66. ClipRRect(
  67. borderRadius: BorderRadius.circular(10),
  68. child: Container(
  69. width: 60,
  70. height: 60,
  71. child: headImg == null || headImg == ''
  72. ? Image.asset(Constants.DefaultHeadImgUrl)
  73. : CachedNetworkImage(
  74. imageUrl: headImg,
  75. placeholder: (context, url) =>
  76. Image.asset(Constants.DefaultHeadImgUrl)))),
  77. SizedBox(width: 10),
  78. Column(
  79. crossAxisAlignment: CrossAxisAlignment.start,
  80. children: <Widget>[
  81. Row(
  82. children: <Widget>[
  83. Container(
  84. constraints: BoxConstraints(maxWidth: 170),
  85. child: Text(name,
  86. textScaleFactor: 1.0,
  87. overflow: TextOverflow.ellipsis,
  88. style: TextStyle(
  89. color: Constants.BlackTextColor,
  90. fontWeight: FontWeight.w500,
  91. fontSize: 16))),
  92. SizedBox(width: 5),
  93. Icon(
  94. IconData(
  95. isMan ? 0xe639 : 0xe638,
  96. fontFamily: 'iconfont',
  97. ),
  98. color: isMan
  99. ? const Color(0xff0072ff)
  100. : const Color(0xffff0486),
  101. size: 13,
  102. )
  103. ],
  104. ),
  105. //地址
  106. SizedBox(height: 10),
  107. fixedText(
  108. country == 'China'
  109. ? '${WebData().getCountry(country)}'
  110. : '${WebData().getCountry(country)} ${WebData().getCity(city)}',
  111. fontSize: 11,
  112. color: Constants.GreyTextColor)
  113. ],
  114. )
  115. ],
  116. ));
  117. }
  118. }