直播源码APP的最佳扫码插件,实现自定义视图
直播源码APP的最佳扫码插件,实现自定义视图的相关代码
实现自定义视图:
class CustomizedView extends StatefulWidget { @override _CustomizedViewState createState() => _CustomizedViewState(); } const boxSize = 200.0; class _CustomizedViewState extends State<CustomizedView> { late ScanKitController _controller; final screenWidth = window.physicalSize.width; final screenHeight = window.physicalSize.height; @override void dispose(){ _controller.dispose(); super.dispose(); } @override Widget build(BuildContext context) { var pixelSize = boxSize * window.devicePixelRatio; var left = screenWidth/2 - pixelSize/2; var top = screenHeight/2 - pixelSize/2; var right = screenWidth/2 + pixelSize/2; var bottom = screenHeight/2 + pixelSize/2; var rect = Rect.fromLTRB(left, top, right, bottom); return Scaffold( body: SafeArea( child: Stack( children: [ ScanKitWidget( callback: (controller) { _controller = controller; controller.onResult.listen((result) { debugPrint("scanning result:$result"); Navigator.of(context).pop(result); }); }, continuouslyScan: false, boundingBox: rect), Align( alignment: Alignment.topCenter, child: Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ IconButton( onPressed: () { Navigator.of(context).pop(); }, icon: Icon( Icons.arrow_back, color: Colors.white, size: 28, )), IconButton( onPressed: () { _controller.switchLight(); }, icon: Icon( Icons.lightbulb_outline_rounded, color: Colors.white, size: 28, )), IconButton( onPressed: () { _controller.pickPhoto(); }, icon: Icon( Icons.picture_in_picture_rounded, color: Colors.white, size: 28, )) ], ), ), Align( alignment: Alignment.center, child: Container( width: boxSize, height: boxSize, decoration: BoxDecoration( border: Border( left: BorderSide(color: Colors.orangeAccent, width: 2), right: BorderSide(color: Colors.orangeAccent, width: 2), top: BorderSide(color: Colors.orangeAccent, width: 2), bottom: BorderSide(color: Colors.orangeAccent, width: 2)), ), ), ) ], ), ), ); } }
拉起自定义视图:
Future<void> newPage(BuildContext context) async { var code = await Navigator.of(context).push(MaterialPageRoute( builder: (BuildContext context) { return CustomizedView(); } )); setState(() { this.code = code ?? ""; }); }
以上就是 直播源码APP的最佳扫码插件,实现自定义视图的相关代码,更多内容欢迎关注之后的文章
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现