flutter - 颤振错误:“对象?”类型的值 不能分配给“地图”类型的变量'
问题描述
“对象?”类型的值 不能分配给“地图<动态,动态>”类型的变量。
这一行的错误data = ModalRoute.of(context).settings.arguments;
class WorldTime {
String location; //location name for UI
late String time; //the time in location
String flag; //url to an asset flag icon
String url; //location url for api endpoint
WorldTime({required this.location, required this.flag, required this.url});
Future<void> getTime() async{
try{
//make the request
Response response = await get(Uri. parse('http://worldtimeapi.org/api/timezone/$url'));
Map data = jsonDecode(response.body);
//print(data);
//get properties from data
String datetime = data['datetime'];
String offset = data['utc_offset'].substring(1,3);
//create datetime object
DateTime now = DateTime.parse(datetime);
now = now.subtract(Duration(hours: int.parse(offset)));
// set the time property
time = now.toString();
}
catch(e){
print('caught error : $e');
time = 'could not get time data';
}
}
}
在这里使用该类对象
void setupWorldTime() async {
WorldTime x =WorldTime(location: 'kolkata', flag: 'g.png', url: '/Asia/Kolkata');
await x.getTime();
Navigator.pushReplacementNamed(context, '/home',arguments: {
'location' : x.location,
'flag' : x.flag,
'time' : x.time,
});
}
我正在尝试使用pushReplacementNamed();
Map data = {};
@override
Widget build(BuildContext context) {
data = ModalRoute.of(context).settings.arguments;
解决方案
- 为参数创建一个类:
class MyArguments {
String? myString;
int? myInt;
MyArguments(this.myString, this.myInt);
}
- 例如传递这样的值:
Navigator.pushNamed(
context,
'/route',
arguments: MyArguments("a",1),
);
- 使用它作为目标小部件的构建器:
@override
Widget build(BuildContext context) {
final args = ModalRoute.of(context)!.settings.arguments as MyArguments;
// do something with args.myString, args.myInt
推荐阅读
- ios - 如何在单独的 xib 文件和单独的类中创建工具栏并在多个视图控制器中使用它?
- mapbox - 地图缩放时如何不加载cartoDB的隐藏层(Mapbox是底图)
- html - 简单导航栏不起作用:只显示空白 div
- r - 每个参数每小时数据的每日平均值
- angular - Angular 类型脚本依赖项未定义或类未定义
- php - 将多行内的值保存到数组
- c++ - c++ 激光检测使用逐帧分析
- python - 使用 numpy 将带通滤波器应用于 .WAV 文件
- search - 是否可以在必应自定义搜索实例中指定同义词?
- objective-c - 如何在 swift 库中包含 ObjectiveC 依赖项