[英]Flutter Plugin With Kotlin, Activity always returns null
[英]GetStorage always returns null in flutter
代碼
print("Before : ${GetStorage().read("XXX")}");
GetStorage().write("XXX", 1);
print("After : ${GetStorage().read("XXX")}");
這是我的代碼。 每次我運行應用程序時,Output 都是
之前:null
之后:1
為什么每次重啟App都會清空存儲數據? 我認為這是 SharedPreference 的替代方案,效果很好。 我錯過了什么嗎?
您應該等待GetStorage.init()
。
void main() async {
await GetStorage.init();
print("Before : ${GetStorage().read("XXX")}");
GetStorage().write("XXX", 1);
print("After : ${GetStorage().read("XXX")}");
}
在任何事情之前,初始化包,通常我在 main.dart 上執行此操作
main() async {
await GetStorage.init();
}
從 GetStorage 創建一個實例,我總是在盒子上放一個名字,如果沒有,它默認會放“GetStorage”。 它需要有一個名稱,以便它可以檢索您的數據。
GetStorage getStorage = GetStorage('myData');
之后,您可以從中寫入和檢索數據,我建議您“等待”所有讀取和寫入。
await getStorage.write('XXX', 1);
var a = await getStorage.read('XXX');
print(a); /// 1
我建議您根據要存放的物品在盒子上寫一個名稱。
final _userBox = () => GetStorage('User');
class UserPref {
void call(){
_userBox.call()..initStorage;
}
dynamic setValueInt(String key, int value) {
return 0.val(key, getBox: _userBox).val = value;
}
String setValue(String key, String value) {
return ''.val(key, getBox: _userBox).val = value;
}
dynamic getValueInt(String key) {
return (-1).val(key,getBox: _userBox).val;
}
dynamic getValue(String key) {
return ''.val(key,getBox: _userBox).val;
}
void setUser(User user) {
''.val('uname', getBox: _userBox).val = user.uname ?? '';
(-1).val('gender', getBox: _userBox).val = user.gender ?? -1;
''.val('born', getBox: _userBox).val = user.born.toString();
true.val('enabled', getBox: _userBox).val = user.enabled ?? true;
}
User getUser() {
final String? uname = ''.val('uname',getBox: _userBox).val;
final int? gender = (-1).val('gender',getBox: _userBox).val;
final DateTime? born = ''.val('born',getBox: _userBox).val == '' ? null : DateTime.parse(''.val('born',getBox: _userBox).val);
final bool? enabled = true.val('enabled',getBox: _userBox).val;
return User(
uname: uname,
gender: gender,
born: born,
enabled: enabled,
);
}
}
///INIT:
@override
void initState() {
//The init function must be written separately from the read/write function due to being asynchronous.
UserPref().call();
}
//OR
Future<void> main() async {
//await GetStorage.init();
UserPref().call();
}
///USAGE:
class MyStatefulWidget extends StatefulWidget {
final Users prefUser = UserPref().getUser();
...
}
//OR
@override
Widget build(BuildContext context) {
final Users prefUser = UserPref().getUser();
return ...;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.