scan.dart

这个文件 lib/pages/home/scan.dart 是一个扫码页面的实现,主要功能是:

  1. 基本功能:

    • 提供二维码/条形码的扫描界面
    • 使用 scan_barcode 包来实现扫码功能
    • 扫描成功后自动返回扫描结果
  2. 交互流程:

    • 页面顶部有返回按钮的导航栏
    • 主体是扫码组件(BarcodeWidget)
    • 当成功扫描到条码/二维码时,会自动返回上一页面并带回扫描结果
    • 有防重复返回的保护机制(通过 isPop 标志位防止多次触发返回)
  3. 使用场景:

    • 扫描商品条形码
    • 扫描二维码
    • 用于商品查询
    • 用于链接跳转

这是一个简洁的扫码实现,主要用于在应用中提供扫码功能,比如商品扫码、二维码识别等场景。从首页的扫码按钮点击后会打开这个扫码页面。

import 'package:flutter/material.dart'; import 'package:wifi_scan/wifi_scan.dart'; import 'package:wifi_iot/wifi_iot.dart'; import 'package:permission_handler/permission_handler.dart'; class WiFiListScreen extends StatefulWidget { @override _WiFiListScreenState createState() => _WiFiListScreenState(); } class _WiFiListScreenState extends State<WiFiListScreen> { List<WiFiAccessPoint> accessPoints = []; bool isScanning = false; @override void initState() { super.initState(); _checkPermissionsAndStartScan(); } Future<void> _checkPermissionsAndStartScan() async { // 检查并请求位置权限 var status = await Permission.location.request(); if (status.isGranted) { _startScan(); } else { // 处理权限被拒绝的情况 print("Location permission denied"); } } Future<void> _startScan() async { setState(() => isScanning = true); accessPoints = await WiFiScan.instance.getScannedResults() ?? []; setState(() => isScanning = false); } Future<void> _connectToWiFi(String ssid, String password) async { // 使用wifi_iot连接WiFi bool isConnected = await WiFiForIoTPlugin.connect( ssid, password: password, security: NetworkSecurity.WPA, // 根据实际情况修改,例如WPA, WEP, NONE等 ); if (isConnected) { print("Connected to $ssid"); } else { print("Failed to connect"); } } @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar(title: Text("WiFi List")), body: isScanning ? Center(child: CircularProgressIndicator()) : ListView.builder( itemCount: accessPoints.length, itemBuilder: (context, index) { final ap = accessPoints[index]; return ListTile( title: Text(ap.ssid), subtitle: Text("Signal: ${ap.level}dBm"), onTap: () { // 弹出对话框输入密码 _showPasswordDialog(ap.ssid); }, ); }, ), floatingActionButton: FloatingActionButton( onPressed: _checkPermissionsAndStartScan, child: Icon(Icons.refresh), ), ); } void _showPasswordDialog(String ssid) { TextEditingController passwordController = TextEditingController(); showDialog( context: context, builder: (context) => AlertDialog( title: Text("Connect to $ssid"), content: TextField( controller: passwordController, obscureText: true, decoration: InputDecoration(labelText: 'Password'), ), actions: [ TextButton( onPressed: () => Navigator.pop(context), child: Text("Cancel"), ), TextButton( onPressed: () { Navigator.pop(context); _connectToWiFi(ssid, passwordController.text); }, child: Text("Connect"), ), ], ), ); } } 怎么在这里使用 import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; import '../../../core/localization/app_localizations.dart'; import '../viewmodels/home_viewmodel.dart'; import 'item_list.dart'; import '../../WiFiListScreen/WiFiListScreen.dart'; class HomeTab extends StatelessWidget { const HomeTab({super.key}); @override Widget build(BuildContext context) { final viewModel = context.watch<HomeViewModel>(); final localizations = AppLocalizations.of(context); // if (viewModel.isLoading) { // return const Center(child: CircularProgressIndicator()); // } // if (viewModel.errorMessage != null && viewModel.items.isEmpty) { // return Center( // child: Text(localizations.translate(viewModel.errorMessage!)), // ); // } // return ItemList(items: viewModel.items); } }
10-12
pathaccessexception directory listing failedsyy_log: 分析备份任务,当前网络状态为 ConnectivityResult.wifi 设备状态 NetType.internal flutter: 2025-11-04 16:23:59.510 syy_log: package:siyouyun_model/global/watcher.dart:35:5 syy_log: 备份文件夹实时监听 localpath /Users/cao.xinzhe/Desktop/test/test2 flutter: 2025-11-04 16:23:59.517 syy_log: package:siyouyun_model/scan_local_files.dart:342:5 syy_log: test2 备份文件扫描错误 PathAccessException: Directory listing failed, path = '/Users/cao.xinzhe/Desktop/test/test2/' (OS Error: Operation not permitted, errno = 1) flutter: 2025-11-04 16:23:59.518 syy_log: package:siyouyun_model/scan_local_files.dart:344:5 syy_log: test2 备份文件扫描完成,需要备份的总文件数:0 {id: [#b173b], configName: test2, backupFileType: SyyFileType.all, backupStrategy: BackupStrategy.wifi, backupType: BackupType.custom, dir: /Users/cao.xinzhe/Desktop/test/test2, syyPath: /ufi/pool-raw/syspool/Backup/test2, recursive: true, reservePath: true, excludeFolder: , customMime: , customExt: , backupHiddenFile: false, struct: yyyymm, dtRange: , deleteAfterSuccess: false, albums: [], hash: } flutter: 2025-11-04 16:23:59.520 syy_log: package:siyouyun_model/upload/index.dart:27:3 syy_log: generateIsarUploadTask id: 2025-11-04 16:23:59_gTqOzUIwNdyP flutter: 2025-11-04 16:23:59.520 syy_log: package:siyouyun_model/upload/index.dart:33:3 syy_log: 添加上传任务2 0 ms flutter: 2025-11-04 16:23:59.533 syy_log: package:siyouyun_model/upload/index.dart:569:5 syy_log: IsarUploadTaskManager.uploadTaskUpdate 任务数 0 flutter: 2025-11-04 16:24:05.261 syy_log: package:siyouyun_model/global/websocket.dart:99:5 syy_log: websocket onDone flutter: 2025-11-04 16:24:15.266 syy_log: package:siyouyun_model/global/websocket.dart:99:5 syy_log: websocket onDone flutter: 2025-11-04 16:24:25.258 syy_log: package:siyouyun_model/global/websocket.dart:99:5 syy_log: websocket onDone flutter: 2025-11-04 16:24:35.259 syy_log: package:siyouyun_model/global/websocket.dart:99:5 syy_log: websocket onDone flutter: 2025-11-04 16:24:45.260 syy_log: package:siyouyun_model/global/websocket.dart:99:5 syy_log: websocket onDone flutter: 2025-11-04 16:24:55.275 syy_log: package:siyouyun_model/global/websocket.dart:99:5 syy_log: websocket onDone flutter: 2025-11-04 16:25:05.262 syy_log: package:siyouyun_model/global/websocket.dart:99:5 syy_log: websocket onDone flutter: 2025-11-04 16:25:15.266 syy_log: package:siyouyun_model/global/websocket.dart:99:5 syy_log: websocket onDone flutter: 2025-11-04 16:25:25.273 syy_log: package:siyouyun_model/global/websocket.dart:99:5 syy_log: websocket onDone flutter: 2025-11-04 16:25:35.269 syy_log: package:siyouyun_model/global/websocket.dart:99:5 syy_log: websocket onDone flutter: 2025-11-04 16:25:45.268 syy_log: package:siyouyun_model/global/websocket.dart:99:5 syy_log: websocket onDone flutter: 2025-11-04 16:25:55.269 syy_log: package:siyouyun_model/global/websocket.dart:99:5 syy_log: websocket onDone flutter: 2025-11-04 16:26:05.278 syy_log: package:siyouyun_model/global/websocket.dart:99:5 syy_log: websocket onDone flutter: 2025-11-04 16:26:15.261 syy_log: package:siyouyun_model/global/websocket.dart:99:5 syy_log: websocket onDone flutter: 2025-11-04 16:26:25.262 syy_log: package:siyouyun_model/global/websocket.dart:99:5 syy_log: websocket onDone flutter: 2025-11-04 16:26:35.279 syy_log: package:siyouyun_model/global/websocket.dart:99:5 syy_log: websocket onDone flutter: 2025-11-04 16:26:45.288 syy_log: package:siyouyun_model/global/websocket.dart:99:5 syy_log: websocket onDone flutter: 2025-11-04 16:26:55.262 syy_log: package:siyouyun_model/global/websocket.dart:99:5 syy_log: websocket onDone flutter: 2025-11-04 16:27:05.259 syy_log: package:siyouyun_model/global/websocket.dart:99:5 syy_log: websocket onDone flutter: 2025-11-04 16:27:15.275 syy_log: package:siyouyun_model/global/websocket.dart:99:5 syy_log: websocket onDone flutter: 2025-11-04 16:27:25.262 syy_log: package:siyouyun_model/global/websocket.dart:99:5 syy_log: websocket onDone flutter: 2025-11-04 16:27:35.263 syy_log: package:siyouyun_model/global/websocket.dart:99:5 syy_log: websocket onDone flutter: 2025-11-04 16:27:35.443 syy_log: package:siyouyun_flutter/main.dart:215:9 syy_log: 应用失去焦点(inactive) flutter: 2025-11-04 16:27:36.902 syy_log: package:siyouyun_flutter/main.dart:209:9 syy_log: 应用进入前台并活跃(resumed) flutter: 2025-11-04 16:27:38.397 syy_log: package:siyouyun_flutter/app/pages/backup_page/controller.dart:110:5 syy_log: getConfigList flutter: 2025-11-04 16:27:41.104 syy_log: package:siyouyun_model/scan_local_files.dart:342:5 syy_log: test2 备份文件扫描错误 PathAccessException: Directory listing failed, path = '/Users/cao.xinzhe/Desktop/test/test2/' (OS Error: Operation not permitted, errno = 1) flutter: 2025-11-04 16:27:41.105 syy_log: package:siyouyun_model/scan_local_files.dart:344:5 syy_log: test2 备份文件扫描完成,需要备份的总文件数:0 {id: [#b173b], configName: test2, backupFileType: SyyFileType.all, backupStrategy: BackupStrategy.wifi, backupType: BackupType.custom, dir: /Users/cao.xinzhe/Desktop/test/test2, syyPath: /ufi/pool-raw/syspool/Backup/test2, recursive: true, reservePath: true, excludeFolder: , customMime: , customExt: , backupHiddenFile: false, struct: yyyymm, dtRange: , deleteAfterSuccess: false, albums: [], hash: } flutter: 2025-11-04 16:27:43.138 syy_log: package:siyouyun_flutter/main.dart:215:9 syy_log: 应用失去焦点(inactive) flutter: 2025-11-04 16:27:45.275 syy_log: package:siyouyun_model/global/websocket.dart:99:5 syy_log: websocket onDone flutter: 2025-11-04 16:27:55.263 syy_log: package:siyouyun_model/global/websocket.dart:99:5 syy_log: websocket onDone flutter: 2025-11-04 16:28:05.285 syy_log: package:siyouyun_model/global/websocket.dart:99:5 syy_log: websocket onDone flutter: 2025-11-04 16:28:15.285 syy_log: package:siyouyun_model/global/websocket.dart:99:5 syy_log: websocket onDone flutter: 2025-11-04 16:28:25.269 syy_log: package:siyouyun_model/global/websocket.dart:99:5 syy_log: websocket onDone flutter: 2025-11-04 16:28:34.969 syy_log: package:siyouyun_flutter/main.dart:215:9 syy_log: 应用失去焦点(inactive) flutter: 2025-11-04 16:28:35.262 syy_log: package:siyouyun_model/global/websocket.dart:99:5 syy_log: websocket onDone flutter: 2025-11-04 16:28:45.283 syy_log: package:siyouyun_model/global/websocket.dart:99:5 syy_log: websocket onDone flutter: 2025-11-04 16:28:55.296 syy_log: package:siyouyun_model/global/websocket.dart:99:5 syy_log: websocket onDone flutter: 2025-11-04 16:29:05.259 syy_log: package:siyouyun_model/global/websocket.dart:99:5 syy_log: websocket onDone flutter: 2025-11-04 16:29:15.325 syy_log: package:siyouyun_model/global/websocket.dart:99:5 syy_log: websocket onDone flutter: 2025-11-04 16:29:25.324 syy_log: package:siyouyun_model/global/websocket.dart:99:5 syy_log: websocket onDone flutter: 2025-11-04 16:29:35.335 syy_log: package:siyouyun_model/global/websocket.dart:99:5 syy_log: websocket onDone flutter: 2025-11-04 16:29:43.168 syy_log: package:siyouyun_flutter/main.dart:215:9 syy_log: 应用失去焦点(inactive) flutter: 2025-11-04 16:29:45.333 syy_log: package:siyouyun_model/global/websocket.dart:99:5 syy_log: websocket onDone flutter: 2025-11-04 16:29:55.422 syy_log: package:siyouyun_model/global/websocket.dart:99:5 syy_log: websocket onDone flutter: 2025-11-04 16:30:05.389 syy_log: package:siyouyun_model/global/websocket.dart:99:5 syy_log: websocket onDone flutter: 2025-11-04 16:30:15.325 syy_log: package:siyouyun_model/global/websocket.dart:99:5 syy_log: websocket onDone flutter: 2025-11-04 16:30:27.332 syy_log: package:siyouyun_model/global/websocket.dart:99:5 syy_log: websocket onDone flutter: 2025-11-04 16:30:39.334 syy_log: package:siyouyun_model/global/websocket.dart:99:5 syy_log: websocket onDone flutter: 2025-11-04 16:30:49.324 syy_log: package:siyouyun_model/global/websocket.dart:99:5 syy_log: websocket onDone flutter: 2025-11-04 16:30:59.326 syy_log: package:siyouyun_model/global/websocket.dart:99:5 syy_log: websocket onDone flutter: 2025-11-04 16:31:09.333 syy_log: package:siyouyun_model/global/websocket.dart:99:5 syy_log: websocket onDone flutter: 2025-11-04 16:31:19.330 syy_log: package:siyouyun_model/global/websocket.dart:99:5 syy_log: websocket onDone flutter: 2025-11-04 16:31:29.334 syy_log: package:siyouyun_model/global/websocket.dart:99:5 syy_log: websocket onDone flutter: 2025-11-04 16:31:39.341 syy_log: package:siyouyun_model/global/websocket.dart:99:5 syy_log: websocket onDone flutter: 2025-11-04 16:31:49.327 syy_log: package:siyouyun_model/global/websocket.dart:99:5 syy_log: websocket onDone flutter: 2025-11-04 16:31:59.328 syy_log: package:siyouyun_model/global/websocket.dart:99:5 syy_log: websocket onDone flutter: 2025-11-04 16:32:09.324 syy_log: package:siyouyun_model/global/websocket.dart:99:5 syy_log: websocket onDone flutter: 2025-11-04 16:32:19.332 syy_log: package:siyouyun_model/global/websocket.dart:99:5 syy_log: websocket onDone flutter: 2025-11-04 16:32:29.513 syy_log: package:siyouyun_model/global/websocket.dart:99:5 syy_log: websocket onDone flutter: 2025-11-04 16:32:39.344 syy_log: package:siyouyun_model/global/websocket.dart:99:5 syy_log: websocket onDone flutter: 2025-11-04 16:32:49.524 syy_log: package:siyouyun_model/global/websocket.dart:99:5 syy_log: websocket onDone flutter: 2025-11-04 16:32:59.345 syy_log: package:siyouyun_model/global/websocket.dart:99:5 syy_log: websocket onDone flutter: 2025-11-04 16:33:09.324 syy_log: package:siyouyun_model/global/websocket.dart:99:5 syy_log: websocket onDone flutter: 2025-11-04 16:33:19.335 syy_log: package:siyouyun_model/global/websocket.dart:99:5 syy_log: websocket onDone flutter: 2025-11-04 16:33:31.339 syy_log: package:siyouyun_model/global/websocket.dart:99:5 syy_log: websocket onDone flutter: 2025-11-04 16:33:43.348 syy_log: package:siyouyun_model/global/websocket.dart:99:5 syy_log: websocket onDone flutter: 2025-11-04 16:33:53.337 syy_log: package:siyouyun_model/global/websocket.dart:99:5 syy_log: websocket onDone flutter: 2025-11-04 16:34:03.335 syy_log: package:siyouyun_model/global/websocket.dart:99:5 syy_log: websocket onDone flutter: 2025-11-04 16:34:13.339 syy_log: package:siyouyun_model/global/websocket.dart:99:5 syy_log: websocket onDone flutter: 2025-11-04 16:34:23.329 syy_log: package:siyouyun_model/global/websocket.dart:99:5 syy_log: websocket onDone flutter: 2025-11-04 16:34:24.288 syy_log: package:siyouyun_flutter/main.dart:209:9 syy_log: 应用进入前台并活跃(resumed) flutter: 2025-11-04 16:34:35.345 syy_log: package:siyouyun_model/global/websocket.dart:99:5 syy_log: websocket onDone 2025-11-04 16:34:38.279 minis[63334:1024578] error messaging the mach port for IMKCFRunLoopWakeUpReliable flutter: 2025-11-04 16:34:38.394 syy_log: package:siyouyun_model/scan_local_files.dart:342:5 syy_log: test2 备份文件扫描错误 PathAccessException: Directory listing failed, path = '/Users/cao.xinzhe/Desktop/test/test2/' (OS Error: Operation not permitted, errno = 1) flutter: 2025-11-04 16:34:38.395 syy_log: package:siyouyun_model/scan_local_files.dart:344:5 syy_log: test2 备份文件扫描完成,需要备份的总文件数:0 {id: [#b173b], configName: test2, backupFileType: SyyFileType.all, backupStrategy: BackupStrategy.wifi, backupType: BackupType.custom, dir: /Users/cao.xinzhe/Desktop/test/test2, syyPath: /ufi/pool-raw/syspool/Backup/test2, recursive: true, reservePath: true, excludeFolder: , customMime: , customExt: , backupHiddenFile: false, struct: yyyymm, dtRange: , deleteAfterSuccess: false, albums: [], hash: } flutter: 2025-11-04 16:34:39.708 syy_log: package:siyouyun_flutter/main.dart:215:9 syy_log: 应用失去焦点(inactive) 2025-11-04 16:34:43.773 minis[63334:1024578] _TIPropertyValueIsValid called with 12 on nil context! 2025-11-04 16:34:43.773 minis[63334:1024578] imkxpc_setApplicationProperty:value:reply: called with incorrect property value 12, bailing. flutter: 2025-11-04 16:34:43.780 syy_log: package:siyouyun_flutter/main.dart:209:9 syy_log: 应用进入前台并活跃(resumed) flutter: 2025-11-04 16:34:45.525 syy_log: package:siyouyun_model/global/websocket.dart:99:5 syy_log: websocket onDone flutter: 2025-11-04 16:34:54.572 syy_log: package:siyouyun_model/scan_local_files.dart:344:5 syy_log: test2 备份文件扫描完成,需要备份的总文件数:1 {id: [#b173b], configName: test2, backupFileType: SyyFileType.all, backupStrategy: BackupStrategy.wifi, backupType: BackupType.custom, dir: /Users/cao.xinzhe/Desktop/test/test3, syyPath: /ufi/pool-raw/syspool/Backup/test2, recursive: true, reservePath: true, excludeFolder: , customMime: , customExt: , backupHiddenFile: false, struct: yyyymm, dtRange: , deleteAfterSuccess: false, albums: [], hash: } flutter: 2025-11-04 16:34:55.331 syy_log: package:siyouyun_model/global/websocket.dart:99:5 syy_log: websocket onDone flutter: 2025-11-04 16:34:58.046 syy_log: package:siyouyun_flutter/main.dart:215:9 syy_log: 应用失去焦点(inactive) flutter: 2025-11-04 16:35:03.599 syy_log: package:siyouyun_flutter/main.dart:209:9 syy_log: 应用进入前台并活跃(resumed) flutter: 2025-11-04 16:35:05.331 syy_log: package:siyouyun_model/global/websocket.dart:99:5 syy_log: websocket onDone flutter: 2025-11-04 16:35:15.374 syy_log: package:siyouyun_model/global/websocket.dart:99:5 syy_log: websocket onDone flutter: 2025-11-04 16:35:17.359 syy_log: package:siyouyun_model/scan_local_files.dart:344:5 syy_log: test2 备份文件扫描完成,需要备份的总文件数:1 {id: [#b173b], configName: test2, backupFileType: SyyFileType.all, backupStrategy: BackupStrategy.wifi, backupType: BackupType.custom, dir: /Users/cao.xinzhe/Desktop/test/test2, syyPath: /ufi/pool-raw/syspool/Backup/test2, recursive: true, reservePath: true, excludeFolder: , customMime: , customExt: , backupHiddenFile: false, struct: yyyymm, dtRange: , deleteAfterSuccess: false, albums: [], hash: } flutter: 2025-11-04 16:35:21.253 syy_log: package:siyouyun_flutter/main.dart:215:9 syy_log: 应用失去焦点(inactive) flutter: 2025-11-04 16:35:25.333你看,我切换test3是正常的,然后再换成test2也是正常的,后面我发现是在macOS上,每次重启应用,默认访问都有这个权限的问题,但是重新选择一遍,就没问题了。不过我退出应用重新进入又有这个权限的问题
11-05
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值