我想做的是將一個小時值傳遞到另一個頁面,傳遞到下拉欄中供用戶更新小時,但是當我嘗試使用 sharedpreference 來存盤資料并獲取資料時。我能夠在 print(get) 期間列印出資料,但是分配 get 值的 dropdownvalue 是空的,并被分配初始值 1。
class UpdateService extends StatefulWidget {
final String serviceName;
final String serviceDetails;
final String serviceImage;
UpdateService({required this.serviceName, required this.serviceDetails,
required this.serviceImage});
@override
State<UpdateService> createState() => UpdateServiceState();
}
String dropdownvalue = '1';
class UpdateServiceState extends State<UpdateService> {
TextEditingController serviceDetailsController = TextEditingController();
TextEditingController hoursNeedController = TextEditingController();
var items = ['1', '2', '3', '4',
'5', '6', '7', '8', '9'];
@override
void initState(){
serviceDetailsController = TextEditingController(text: widget.serviceDetails.toString());
loadPref();
super.initState();
}
loadPref() async{
SharedPreferences prefs = await SharedPreferences.getInstance();
//Return String
String get = prefs.getString('hour').toString() ?? "none";
dropdownvalue = get;
print(get);
}
Widget build(BuildContext context) {
DropdownButton(
value: dropdownvalue,
items: items.map((String items){
return DropdownMenuItem(
value: items,
child: Text(items));
}).toList(),
onChanged: (String? newValue){
setState(() {
dropdownvalue = newValue!;
});
}),
好吧,我對如何通過它沒有想法,我希望有人能幫助我
uj5u.com熱心網友回復:
String get = prefs.getString('小時').toString();
如果它被存盤,將嘗試獲取它,但你還沒有保存它所以它拋出null并且你不能分配null給你的情況下的不可空Object,String所以你需要讓它可以為空并給它一個默認值當它為空時,所以:
代替:
String get = prefs.getString('hour').toString();
有了這個:
String? get = prefs.getString('hour').toString() ?? "default value here";
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/533715.html
下一篇:之后從函式輸入和文本中獲取變數
