直播源码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的最佳扫码插件,实现自定义视图的相关代码,更多内容欢迎关注之后的文章

posted @   云豹科技-苏凌霄  阅读(717)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示