【发布时间】:2020-02-04 05:54:51
【问题描述】:
我希望容器具有某种颜色,它来自 sharedpreference 或类似的东西!有没有解决这个问题的小工具!!或者我可以通过共享偏好来做到这一点!如果我能!如何?
【问题讨论】:
我希望容器具有某种颜色,它来自 sharedpreference 或类似的东西!有没有解决这个问题的小工具!!或者我可以通过共享偏好来做到这一点!如果我能!如何?
【问题讨论】:
更好的方法是保存color.value。
使用
final prefs = await SharedPreferences.getInstance();
Color myColor = Color(prefs.getInt('color') ?? Colors.blue.value);
// change Colors.blue to a default color
获取颜色,并且
prefs.setInt('color', myColor.value);
保存颜色。
【讨论】:
使用flutter SharedPreferences插件只能保存String, int, StringList, double, Bool。
解决方法是将颜色的RGBO 值保存在SharedPreferences 中,这适用于Android 和iOS。
第一步:安装插件
pubspec.yaml
将 SharedPreferences 添加到您的 pubspec.yaml 文件中。点击here查看最新版本。
dependencies:
flutter:
sdk: flutter
shared_preferences: ^0.5.3+4
步骤 2. 将 RGBO 值保存到 SharedPreferences
void saveColor(int r, int g, int b, double opacity) async {
final prefs = await SharedPreferences.getInstance();
prefs.setInt('r', r);
prefs.setInt('g', g);
prefs.setInt('b', b);
prefs.setDouble('o', opacity);
}
第 3 步。检索值并创建您的颜色
getColor() async {
final prefs = await SharedPreferences.getInstance();
final r = prefs.getInt('r');
final g = prefs.getInt('g');
final b = prefs.getInt('b');
final opacity = prefs.getDouble('o');
return Color.fromRGBO(r, g, b, opacity);
}
【讨论】:
SharedPreferences 只保存String, int, StringList, double, bool,因此您不能将Color 实例传递给SharedPreferences。解决方法在答案中。