1.数据库选型
flutter项目,需要使用本地存储,面临三个选择
2.项目引用
dependencies:
hive: ^[version]
hive_flutter: ^[version]
dev_dependencies:
hive_generator: ^[version]
build_runner: ^[version]
3.hive的简单使用
之前做个一阵子后台,按照后台的orm逻辑,组装了一下hive。
main.dart里面初始化hive
void main() async {
await InitHive();
runApp(const MyApp());
}
hive的初始化部分,初始化了三张表
import 'package:hive_flutter/adapters.dart';
import 'mclients.dart';
late Box MClients;
Future<void> initHive() async {
await Hive.initFlutter('data');
Hive.registerAdapter(MClientAdapter());
MClients = await Hive.openBox<MClient>('mclients');
}
单个表的model
import 'package:flutter/cupertino.dart';
import 'package:hive_flutter/adapters.dart';
import 'hive.dart';
@HiveType(typeId: 1)
class MClient {
@HiveField(0)
String? clientId;
@HiveField(1)
String? host;
@HiveField(2)
String? port;
@HiveField(3)
String? user;
@HiveField(4)
String? password;
MClient({this.clientId, this.host, this.port, this.user, this.password});
}
class MClientAdapter extends TypeAdapter<MClient> {
@override
final typeId = 0;
@override
MClient read(BinaryReader reader) {
return MClient()
..clientId = reader.read()
..host = reader.read()
..password = reader.read()
..user = reader.read()
..password = reader.read();
}
@override
void write(BinaryWriter writer, MClient obj) {
writer.write(obj.clientId);
writer.write(obj.host);
writer.write(obj.port);
writer.write(obj.user);
writer.write(obj.password);
}
}
void clientCreate(clientId, host, port, user, password) {
var cc = MClient(
clientId: clientId,
host: host,
port: port,
user: user,
password: password);
MClients.put(clientId, cc);
}
MClient? clientGet(clientId) {
if (MClients.get(clientId) != null) {
var cc1 = MClients.get(clientId);
return cc1;
} else {
return null;
}
}
List<MClient> clientGetList() {
var res = MClients.values.toList();
List<MClient> cc = res.cast<MClient>();
debugPrint("查到list: $cc");
return cc;
}
void clientDel(clientId) {
MClients.delete(clientId);
}
使用model
late List<String> clientids;
getClientids() {
clients = ClientGetList();
clientidsd =
List.generate(clients.length, (index) => clients[index].clientid);
clientids = clientidsd.cast<String>();
}
结束。
参考链接