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

Windows 10下运行Flutter Drift官方示例报错SqliteException(14)求助

解决Windows 10上Flutter Drift示例项目的SqliteException(14)错误

核心问题分析

SqliteException(14) 本质是数据库文件无法打开,通常由路径错误或权限不足导致;栈帧断言错误是伴随性问题,源于Flutter未正确解析Drift的异步栈跟踪。

具体解决方案

1. 修正数据库存储路径

Windows系统对应用读写权限有严格限制,示例项目默认路径可能不在允许范围内,需改用应用专属的可读写目录:

  • 确保path_provider依赖已添加(示例项目通常已包含,若缺失执行flutter pub add path_provider)
  • 修改数据库初始化代码(对应main.dart中数据库实例创建部分):
import 'package:path_provider/path_provider.dart';
import 'package:path/path.dart' as p;

// 替换原有的LazyDatabase初始化逻辑
LazyDatabase(() async {
  // 获取应用专属文档目录
  final dbFolder = await getApplicationDocumentsDirectory();
  // 拼接数据库文件路径
  final dbFile = File(p.join(dbFolder.path, 'drift_example.db'));
  return NativeDatabase(dbFile);
})

此路径指向用户文档目录下的专属文件夹,确保应用拥有读写权限。

2. 修复栈帧断言错误

在main.dart的main函数开头添加栈跟踪解析配置,让Flutter正确处理Drift的异步栈帧:

import 'package:drift/drift.dart';
import 'package:flutter/foundation.dart';

void main() {
  // 配置Drift栈跟踪解析
  FlutterError.demangleStackTrace = (StackTrace stack) {
    if (stack is DriftStackTrace) {
      return stack.original;
    }
    return stack;
  };
  
  runApp(const MyApp());
}

3. 额外校验步骤

  • 执行flutter clean后重新运行flutter pub get,确保依赖完整
  • 若仍有sqlite3相关缺失,运行dart run drift_dev download_artifacts手动下载Windows平台所需的sqlite3二进制文件
  • 确认下载的示例项目文件无缺失,特别是pubspec.yaml中的drift相关依赖配置正确

内容的提问来源于stack exchange,提问作者jack wilson

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 07:18:30