存储列表<Obj> 到 SharedPreferences
Store List<Obj> to SharedPreferences
我想将 List<WorkForceArguments>
存储到 SharedPreferences
。
import 'dart:convert';
class WorkForceArguments {
var name;
var no;
WorkForceArguments({this.name, this.no});
factory WorkForceArguments.fromJson(String str) =>
WorkForceArguments.fromMap(json.decode(str));
String toJson() => json.encode(toMap());
factory WorkForceArguments.fromMap(Map<String, dynamic> json) =>
WorkForceArguments(
name: json["name"],
no: json["no"],
);
Map<String, dynamic> toMap() => {
"name": name,
"no": no,
};
}
在pageB
中,当点击提交按钮时,会弹出数据回到页面A
Widget _showButton() {
return Container(
width: double.infinity,
height: 40,
child: MaterialButton(
color: Theme.of(context).primaryColor,
onPressed: () {
Navigator.pop(
context,
WorkForceArguments(
_workForceController.text, _numberController.text)); // Error!
},
child: Text(
Localization.of(context).submit,
style: TextStyle(fontSize: 15.0, color: Colors.white),
),
),
);
}
而在页面 A 中,它有一个用于将数据存储到 SharedPreferences
的存储按钮。但是我在 PageB 上遇到错误。
Navigator.pop(
context,
WorkForceArguments(
_workForceController.text, _numberController.text)); // Error too many arguments, expect 0 but found 2
Navigator.pop(
context,
WorkForceArguments(
name: _workForceController.text,
no: _numberController.text,
),
)
您尝试使用命名参数向构造函数添加参数,阅读有关 Dart 中构造函数和方法的参数的更多信息 here。
我想将 List<WorkForceArguments>
存储到 SharedPreferences
。
import 'dart:convert';
class WorkForceArguments {
var name;
var no;
WorkForceArguments({this.name, this.no});
factory WorkForceArguments.fromJson(String str) =>
WorkForceArguments.fromMap(json.decode(str));
String toJson() => json.encode(toMap());
factory WorkForceArguments.fromMap(Map<String, dynamic> json) =>
WorkForceArguments(
name: json["name"],
no: json["no"],
);
Map<String, dynamic> toMap() => {
"name": name,
"no": no,
};
}
在pageB
中,当点击提交按钮时,会弹出数据回到页面A
Widget _showButton() {
return Container(
width: double.infinity,
height: 40,
child: MaterialButton(
color: Theme.of(context).primaryColor,
onPressed: () {
Navigator.pop(
context,
WorkForceArguments(
_workForceController.text, _numberController.text)); // Error!
},
child: Text(
Localization.of(context).submit,
style: TextStyle(fontSize: 15.0, color: Colors.white),
),
),
);
}
而在页面 A 中,它有一个用于将数据存储到 SharedPreferences
的存储按钮。但是我在 PageB 上遇到错误。
Navigator.pop(
context,
WorkForceArguments(
_workForceController.text, _numberController.text)); // Error too many arguments, expect 0 but found 2
Navigator.pop(
context,
WorkForceArguments(
name: _workForceController.text,
no: _numberController.text,
),
)
您尝试使用命名参数向构造函数添加参数,阅读有关 Dart 中构造函数和方法的参数的更多信息 here。