Flutter 如何在颤振中使用预加载sqlite数据库

Flutter 如何在颤振中使用预加载sqlite数据库,flutter,dart,Flutter,Dart,我是颤振开发方面的新手 我想在颤振应用程序中使用现有数据库 这是怎么可能的?关于你的颤振应用程序,有一个很棒的指南 我发现这对你的场景很有用 您可以访问上述链接,也可以查看下面的分步过程,以使用您的Flatter应用程序中的现有数据库 该指南解释了在Flatter应用程序中捆绑和打开预先存在的SQLite数据库所需的步骤 首先,您必须编辑您的pubspec.yaml配置,以引用预先存在的SQLite数据库文件,以便在构建应用程序时将其捆绑到应用程序中。在下面的示例中,我们将假设该文件存在于您的F

我是颤振开发方面的新手

我想在颤振应用程序中使用现有数据库


这是怎么可能的?

关于你的颤振应用程序,有一个很棒的指南

我发现这对你的场景很有用

您可以访问上述链接,也可以查看下面的分步过程,以使用您的Flatter应用程序中的现有数据库

该指南解释了在Flatter应用程序中捆绑和打开预先存在的SQLite数据库所需的步骤

首先,您必须编辑您的
pubspec.yaml
配置,以引用预先存在的SQLite数据库文件,以便在构建应用程序时将其捆绑到应用程序中。在下面的示例中,我们将假设该文件存在于您的Flatter app目录下的
assets/example.db

# The following section is specific to Flutter.
flutter:

  # The following line ensures that the Material Icons font is
  # included with your application so that you can use the icons in
  # the material Icons class.
  uses-material-design: true

  # To add assets to your application, add an assets section, like this:
  assets:
    - assets/example.db
接下来,在应用程序初始化中,您需要将捆绑的文件数据复制到一个可用的位置,因为捆绑的资源本身不能在Android上直接作为文件打开

sqflite.getDatabasesPath()函数将返回用于此操作的目录。这通常类似于Android上的
/data/data/org.example.myapp/databases/
。有了它,您可以从捆绑资产加载字节数据,并创建应用程序的可写数据库文件,在这里命名为
app.db

// Construct the path to the app's writable database file:
var dbDir = await getDatabasesPath();
var dbPath = join(dbDir, "app.db");

// Delete any existing database:
await deleteDatabase(dbPath);

// Create the writable database file from the bundled demo database file:
ByteData data = await rootBundle.load("assets/example.db");
List<int> bytes = data.buffer.asUint8List(data.offsetInBytes, data.lengthInBytes);
await File(dbPath).writeAsBytes(bytes);
var db = await openDatabase(dbPath);