You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter中Try-Catch块无法捕获local_auth插件的错误求助

问题解决:LocalAuth NotAvailable 异常未被捕获

原因分析

当前代码仅捕获PlatformException,但可能存在以下导致异常未被捕获的情况:

  • 未正确导入flutter/services.dart,导致PlatformException类型不匹配,catch块无法识别
  • 第三方库对底层异常做了额外包装,导致异常类型偏离预期

修复方案

1. 确保导入正确依赖

在文件顶部添加:

import 'package:flutter/services.dart';

2. 修改异常捕获逻辑

扩大捕获范围,同时针对性处理NotAvailable错误:

TextButton(
  child: Text('YES'),
  onPressed: () async {
    try {
      final authenticated = await LocalAuth.authenticate();
      print(authenticated);
      if (authenticated) {
        DatabaseHelper.instance.deleteModel(id as int);
        Navigator.pop(context);
      }
    } on PlatformException catch (e) {
      print('捕获到平台异常: ${e.code} - ${e.message}');
      // 处理NotAvailable场景
      if (e.code == 'NotAvailable') {
        ScaffoldMessenger.of(context).showSnackBar(
          const SnackBar(content: Text('请先设置设备密码或PIN码')),
        );
      }
    } catch (e) {
      // 兜底捕获所有未匹配的异常
      print('捕获到未知异常: $e');
    }
  },
)

关键说明

  • 增加兜底catch (e)可以捕获所有未被PlatformException覆盖的异常类型
  • 通过e.code判断具体错误类型,能实现更精准的业务处理

内容的提问来源于stack exchange,提问作者Laxman Prasad

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 19:55:11