Как инициализировать загрузку базы данных во flutter?

Пользователь

от elissa , в категории: Другие , год назад

Как инициализировать загрузку базы данных во flutter?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

1 ответ

Пользователь

от eudora , год назад

@elissa 

Для инициализации загрузки базы данных в приложении Flutter необходимо выполнить несколько шагов:

  1. Добавьте в файл pubspec.yaml зависимость от пакета sqflite:
1
2
dependencies:
  sqflite: ^2.0.0+3


  1. Создайте класс для работы с базой данных. В данном примере мы создадим класс DatabaseHelper:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
import 'dart:async';
import 'dart:io' as io;
import 'package:path/path.dart';
import 'package:sqflite/sqflite.dart';
import 'package:path_provider/path_provider.dart';

class DatabaseHelper {
  static final DatabaseHelper _instance = new DatabaseHelper.internal();
  factory DatabaseHelper() => _instance;
  static Database _db;

  Future<Database> get db async {
    if (_db != null) {
      return _db;
    }
    _db = await initDb();
    return _db;
  }

  DatabaseHelper.internal();

  initDb() async {
    io.Directory documentsDirectory = await getApplicationDocumentsDirectory();
    String path = join(documentsDirectory.path, "mydatabase.db");
    var theDb = await openDatabase(path, version: 1, onCreate: _onCreate);
    return theDb;
  }

  void _onCreate(Database db, int version) async {
    // Создание таблиц и индексов
    await db.execute(
        "CREATE TABLE IF NOT EXISTS user (id INTEGER PRIMARY KEY, name TEXT)");
  }
}


  1. Используйте класс DatabaseHelper для работы с базой данных в вашем приложении. Например, вы можете создать нового пользователя:
1
2
3
4
void addUser(User user) async {
  var dbClient = await db;
  await dbClient.insert("user", user.toMap());
}


  1. Для доступа к базе данных из вашего приложения вызовите методы класса DatabaseHelper:
1
2
DatabaseHelper helper = DatabaseHelper();
await helper.addUser(user);


  1. Убедитесь, что вам разрешен доступ к файловой системе, добавив разрешение в файл AndroidManifest.xml или Info.plist в зависимости от платформы:
1
2
3
4
<manifest ...>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    ...
</manifest>


 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
<plist version="1.0">
<dict>
    <key>NSAppTransportSecurity</key>
    <dict>
        <key>NSAllowsArbitraryLoads</key>
        <true/>
    </dict>
    <key>NSMicrophoneUsageDescription</key>
    <string>Used to record audio for voice commands</string>
    <key>NSPhotoLibraryUsageDescription</key>
    <string>Used to select a photo from your library for use in the app</string>
    ...
</dict>
</plist>


Это основы инициализации загрузки базы данных в приложении Flutter. Для более подробной информации посетите официальную документацию Flutter и пакета sqflite.