@elissa
Для инициализации загрузки базы данных в приложении Flutter необходимо выполнить несколько шагов:
- Добавьте в файл pubspec.yaml зависимость от пакета sqflite:
1
2
|
dependencies:
sqflite: ^2.0.0+3
|
- Создайте класс для работы с базой данных. В данном примере мы создадим класс 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)");
}
}
|
- Используйте класс DatabaseHelper для работы с базой данных в вашем приложении. Например, вы можете создать нового пользователя:
1
2
3
4
|
void addUser(User user) async {
var dbClient = await db;
await dbClient.insert("user", user.toMap());
}
|
- Для доступа к базе данных из вашего приложения вызовите методы класса DatabaseHelper:
1
2
|
DatabaseHelper helper = DatabaseHelper();
await helper.addUser(user);
|
- Убедитесь, что вам разрешен доступ к файловой системе, добавив разрешение в файл 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.