android - Flutter firestore 共享首选项双类型数据问题
问题描述
在我的颤振应用程序中,当用户注册时,我需要保存双重类型的“身高”数据,我正在使用SharedPreferences
它,但我有一个问题。
这是我的SharedPreferences
代码:
static Future<bool> saveUserWeightSharedPreference(double userWeight) async {
SharedPreferences prefs = await SharedPreferences.getInstance();
return await prefs.setDouble(sharedPreferenceUserLoggedInKey, userWeight);
}
这是我的注册功能,我在哪里使用SharedPreferences
。错误是:
参数类型“String”不能分配给参数类型“double”。(argument_type_not_assignable 在 [spor3] lib\login\signup.dart:52)
signMeUp(){
if(formKey.currentState.validate()){
Map<String, String> userInfoMap = {
"name":userNameTextEditingController.text,
"email": emailTextEditingController.text,
"height": heightTextEditingController.text,
"weight": weightTextEditingController.**text**, // this "text" codes not working
"weightTwo": weightTwoTextEditingController.text,
};
HelperFunctions.saveUserEmailSharedPreference(emailTextEditingController.text);
HelperFunctions.saveUserEmailSharedPreference(userNameTextEditingController.text,);
HelperFunctions.saveUserHeightSharedPreference(heightTextEditingController.text,);
HelperFunctions.saveUserWeightSharedPreference(weightTextEditingController.**text**,);// and this
"text" codes not working
HelperFunctions.saveUserWeightTwoSharedPreference(weightTwoTextEditingController.text,);
setState(() {
isLoading = true;
});
authMethods.signUpWithEmailAndPassword(emailTextEditingController.text, passwordTextEditingController.text).then((val){
databaseMethods.uploadUserInfoTwo(userInfoMap);
HelperFunctions.saveUserLoggedInSharedPreference(true);
Navigator.pushReplacement(context, MaterialPageRoute(builder: (context) => MainPage()));
});
}
}
编辑 1:我更改了我的 signMeUp() 函数,但这次我有另一个问题
signMeUp(){
if(formKey.currentState.validate()){
Map<String, dynamic> userInfoMap = {
"name":userNameTextEditingController.text,
"email": emailTextEditingController.text,
"height": heightTextEditingController.text,
"weight": double.parse(weightTextEditingController.text),
"weightTwo": weightTwoTextEditingController.text,
};
HelperFunctions.saveUserEmailSharedPreference(emailTextEditingController.text);
HelperFunctions.saveUserEmailSharedPreference(userNameTextEditingController.text,);
HelperFunctions.saveUserHeightSharedPreference(heightTextEditingController.text,);
HelperFunctions.saveUserWeightSharedPreference(double.parse(weightTextEditingController.text),);
HelperFunctions.saveUserWeightTwoSharedPreference(weightTwoTextEditingController.text,);
setState(() {
isLoading = true;
});
authMethods.signUpWithEmailAndPassword(emailTextEditingController.text, passwordTextEditingController.text).then((val){
databaseMethods.uploadUserInfoTwo(userInfoMap);
HelperFunctions.saveUserLoggedInSharedPreference(true);
Navigator.pushReplacement(context, MaterialPageRoute(builder: (context) => MainPage()));
});
}
}
问题:
处理手势时引发以下 FormatException:Invalid double
抛出异常时,这是堆栈:#0 double.parse (dart:core-patch/double_patch.dart:111:28)
解决方案
TextEditingController
总是返回一个String
fortext
属性链接。因此,您只需将其解析为双倍然后将其传递给您的函数。
HelperFunctions.saveUserWeightSharedPreference(double.parse(weightTextEditingController.text),);
推荐阅读
- excel - 将字母和计数器值添加到 Excel 中列中的每个单元格
- file - 未处理的异常:内容大小低于指定的 contentLength。已写入 511 个字节,但预期为 704
- c - 在 Linux 上的 C++ 程序中分析常驻内存使用情况和许多页面错误
- r - 如何计算总金额取决于 r 中的日期?
- xcode - 如何在应用启动时打开多个窗口?
- android - 未调用 PendingIntent.getBoradcast 广播接收器
- python - 为什么我的 jupyter 内核在导入 numpy 时在虚拟环境中运行时会死机?
- ios - 强制从用户设备中删除/失效 iOS 应用程序
- python - 如何在pyglet中使用原始像素数据来改变图像大小
- awk - 如何在bash中按行将文件随机拆分为三个相等的文件?