import 'dart:convert'; import 'package:cached_network_image/cached_network_image.dart'; import 'package:chat/data/UserData.dart'; import 'package:chat/data/WebData.dart'; import 'package:chat/data/constants.dart'; import 'package:chat/generated/i18n.dart'; import 'package:chat/models/ref_name_provider.dart'; import 'package:chat/utils/screen.dart'; import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; import 'package:qr_flutter/qr_flutter.dart'; class MyQr extends StatelessWidget { @override Widget build(BuildContext context) { return Align( alignment: Alignment.topCenter, child: Container( alignment: Alignment.center, margin: EdgeInsets.only(top: 55.5), width: 315, height: 424, decoration: BoxDecoration( color: Colors.white, borderRadius: BorderRadius.circular(10), ), child: Column( mainAxisSize: MainAxisSize.min, children: [ _head(context), _qrImg(), Container( padding: EdgeInsets.all(20), child: Text( I18n.of(context).scan_and_add, textScaleFactor: 1.0, style: TextStyle(fontSize: 12.5), ), ) ], ), )); } _qrImg() { //var headImg = UserData().basicInfo.headimgurl; final size = 205.5; var dayAfter = new DateTime.now().add(new Duration(minutes: 5)).millisecondsSinceEpoch; var myId = UserData().basicInfo.userId; final groupIdAndTime = 'type=0&sessionId=$myId&expirationTime=$dayAfter'; var encodeStr = base64Encode(utf8.encode(groupIdAndTime)); return QrImage( data: 'https://henho.jphgames.com/?$encodeStr', version: QrVersions.auto, size: size, ); } _head(BuildContext context) { var userInfo = UserData().basicInfo; var headImg = userInfo.headimgurl; var name = Provider.of(context) .getRefName(userInfo.userId, userInfo.nickName); var isMan = userInfo.sex == 1; var city = userInfo.city; var country = userInfo.country; return Container( padding: EdgeInsets.all(20), child: Row( children: [ ClipRRect( borderRadius: BorderRadius.circular(10), child: Container( width: 60, height: 60, child: headImg == null || headImg == '' ? Image.asset(Constants.DefaultHeadImgUrl) : CachedNetworkImage( imageUrl: headImg, placeholder: (context, url) => Image.asset(Constants.DefaultHeadImgUrl)))), SizedBox(width: 10), Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Row( children: [ Container( constraints: BoxConstraints(maxWidth: 170), child: Text(name, textScaleFactor: 1.0, overflow: TextOverflow.ellipsis, style: TextStyle( color: Constants.BlackTextColor, fontWeight: FontWeight.w500, fontSize: 16))), SizedBox(width: 5), Icon( IconData( isMan ? 0xe639 : 0xe638, fontFamily: 'iconfont', ), color: isMan ? const Color(0xff0072ff) : const Color(0xffff0486), size: 13, ) ], ), //地址 SizedBox(height: 10), fixedText( country == 'China' ? '${WebData().getCountry(country)}' : '${WebData().getCountry(country)} ${WebData().getCity(city)}', fontSize: 11, color: Constants.GreyTextColor) ], ) ], )); } }