gpt4 book ai didi

design-patterns - Flutter-如何在 Flutter 的整个应用程序生命周期中将数据保存在内存中?

转载 作者:IT老高 更新时间:2023-10-28 12:42:14 33 4
gpt4 key购买 nike

我想知道如何保存我在多个屏幕中使用的数据。我们应该在 Flutter 中使用 Singleton 设计模式吗?

假设我使用 BLoC 模式制作了登录模块,如 https://github.com/adamjohnlea/Flutter-Login-With-BLoC-Pattern .

现在,如果对服务器的每个请求,我都需要发送电子邮件和密码。

提供者代码:

import 'package:flutter/material.dart';
import 'bloc.dart';

class Provider extends InheritedWidget {

final bloc = new Bloc();

Provider({Key key, Widget child})
: super(key: key, child: child);

bool updateShouldNotify(_) => true;

static Bloc of(BuildContext context) {
return (context.inheritFromWidgetOfExactType(Provider) as Provider).bloc;
}

}

区号:

import 'validators.dart';
import 'package:rxdart/rxdart.dart';

class Bloc extends Object with Validators {
final _email = BehaviorSubject<String>();
final _password = BehaviorSubject<String>();

// retrieve data from stream
Stream<String> get email => _email.stream.transform(validateEmail);
Stream<String> get password => _password.stream.transform(validatePassword);
Stream<bool> get submitValid => Observable.combineLatest2(email, password, (e, p) => true);

// add data to stream
Function(String) get changeEmail => _email.sink.add;
Function(String) get changePassword => _password.sink.add;

submit() {
final validEmail = _email.value;
final validPassword = _password.value;

print('$validEmail and $validPassword');
}

dispose() {
_email.close();
_password.close();
}
}

1.我应该做单例类(class)吗? AccountManager,我将在哪里存储用户详细信息并在需要的地方获取详细信息?还是我应该使用下面的 Provider 在应用程序的任何地方获取电子邮件和密码?

2.是否建议在 Singleton 类中保存数据?

最佳答案

您可以使用 shared_preferences,包装 NSUserDefaults(在 iOS 上)和 SharedPreferences(在 Android 上),为简单数据提供持久存储。数据异步保存到磁盘。两个平台都不能保证写入返回后会持久化到磁盘,并且此插件不得用于存储关键数据。 shared_preferences

关于design-patterns - Flutter-如何在 Flutter 的整个应用程序生命周期中将数据保存在内存中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54284905/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com