Flutter高仿微信系列共59篇,从Flutter客户端、Kotlin客户端、Web服务器、数据库表结构、Xmpp即时通讯服务器、视频通话服务器、腾讯云服务器全面讲解。
效果图:
实现代码:
/** * Author : wangning * Email : maoning20080809@163.com * Date : 2022/10/21 10:33 * Description : 生成个人二维码 */ class PersonalQrCodeWidget extends StatefulWidget{ @override State<StatefulWidget> createState() => _PersonalQrCodeWidget(); } class _PersonalQrCodeWidget extends State<PersonalQrCodeWidget>{ String account = SpUtils.getString(CommonUtils.LOGIN_ACCOUNT); UserBean? _userBean; String? qrCode; @override void initState() { super.initState(); initUser(); } void initUser() async { _userBean = await UserRepository.getInstance().findUserByAccount(account); setState(() { String nickName = _userBean?.nickName??""; String avatar = _userBean?.avatar??""; qrCode = CommonUtils.QR_ADD_FRIEND + account+CommonUtils.CHAT_MESSAGE_SPILE+nickName+CommonUtils.CHAT_MESSAGE_SPILE+avatar; }); } @override Widget build(BuildContext context) { return Scaffold( appBar: WnAppBar.getAppBar(context, const Text("二维码名片")), backgroundColor: Colors.grey.shade200, body: Center( child: Container( margin: EdgeInsets.all(20), width: AppManager.getInstance().getWidth(context), height: AppManager.getInstance().getWidth(context), decoration: BoxDecoration( color: Colors.white, borderRadius: BorderRadius.circular(10), ), child: Column( mainAxisAlignment: MainAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.center, children: [ getUserInfoWidget(), getQrWidget(), Container( margin: EdgeInsets.only(top: 20), child: Text("扫一扫上面的二维码图案,加我好友", style: TextStyle(color: Colors.grey.shade400),), ) ], ), ), ), ); } //账号信息 Widget getUserInfoWidget(){ return Row( children: [ Container( margin: EdgeInsets.only(left: 30, right: 10, bottom: 12), child: CommonAvatarView.showBaseImage(_userBean?.avatar??""), ), Text("${_userBean?.nickName}"), ], ); } //获取二维码图片 Widget getQrWidget(){ return QrImage( data: '${qrCode}', version: QrVersions.auto, size: 280, gapless: false, embeddedImage: CommonAvatarView.showQrImage(_userBean?.avatar??""), embeddedImageStyle: QrEmbeddedImageStyle( size: Size(50, 50), ), ); } }