Dol*_*rma 2 dart riverpod flutter-hive
Hive在 上使用键值数据库有非常简单的方法StatefulWidgets,例如:
class HookDemo extends StatefulWidget {
@override
_HookDemoState createState() => _HookDemoState();
}
class _HookDemoState extends State<HookDemo> {
Box user;
@override
void initState() {
super.initState();
user = Hive.box<User>('user');
}
@override
Widget build(BuildContext context) {
return Scaffold(
floatingActionButton: FloatingActionButton(
onPressed: () {
final _u = User()
..nameFamily = 'myname'
..mobileNumber = '123456789';
_user!.add(_u);
_u.save();
},
child: Icon(Icons.add),
),
...
);
}
}
Run Code Online (Sandbox Code Playgroud)
在这里我们定义了Box user属性,并在内部initState实现了用户的内容,例如user = Hive.box<User>('user');
之后我们就可以使用user没有任何问题和already opened错误
现在在我们使用的当前应用程序中,HookWidget当我们想要使用时,Hive我们会得到错误:box already opened
main.dart:
Future<void> initHiveDriver() async {
final appDocumentDirectory = await path_provider.getApplicationDocumentsDirectory();
await Hive.initFlutter(appDocumentDirectory.path);
await Hive.openBox<UserAdapter>('user');
}
Future<void> main() async {
WidgetsFlutterBinding.ensureInitialized();
///...
initHiveDriver();
runApp(
ProviderScope(observers: [
Logger()
],
child: MyApp()),
);
}
Run Code Online (Sandbox Code Playgroud)
我如何为Hivewith创建一个提供程序Riverpod并将其用于HookWidget?
ccn*_*brn 10
我像这样将 Hive 与 Riverpod 一起使用。
我正在使用命名构造函数,因此我可以等待 openBox 调用。
final hiveProvider = FutureProvider<HiveDB>((_) => HiveDB.create());
class HiveDB {
var _userBox;
HiveDB._create() {}
static Future<HiveDB> create() async {
final component = HiveDB._create();
await component._init();
return component;
}
_init() async {
Hive.registerAdapter(UserAdapter());
this._userBox = await Hive.openBox<User>('user');
}
storeUser(User user) {
this._userBox.put('user', user);
}
User getUser() {
return this._userBox.get('user');
}
}
Run Code Online (Sandbox Code Playgroud)
在 ConsumerWidget 中使用:
class SomeWidget extends ConsumerWidget {
Widget build(BuildContext context, WidgetRef ref) {
final provider = ref.watch(hiveProvider).data?.value;
...
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4560 次 |
| 最近记录: |