属性'settings'不能无条件访问,因为接收者可以为'null',怎么办 mycode :`import 'package:flutter/material.dart';
class DressDetailsScreen extends StatelessWidget {
static const routeName = '/DressDetailsScreen';
@override
Widget build(BuildContext context) {
final routeArgs = ModalRoute.of(context).settings.arguments ;
return Scaffold(
appBar: AppBar(
title: Text('details'),
),
);
}
}`
答案 0 :(得分:3)
随便用
final routeArgs = ModalRoute.of(context)!.settings.arguments;
自从在 dart 中引入了 null 安全性和可空类型的引入,你就不能直接访问可以为 null 的东西的属性。
在这里,您 ModalRoute.of(context)
可能是一个空值,这就是为什么您需要使用 bang
运算符 (!
) 才能从 { 访问 settings
{1}}。
ModalRoute.of(context)
运算符的作用是,通过在可空值之后使用它,您可以确保 bang
该值绝对不会为空。
但很明显,这会引发运行时问题,以防您的值实际上为空,因此请使用大小写。
答案 1 :(得分:2)
正如错误所说,那是因为 ModalRoute.of(context)
可以为 null。在 jewel store heist 中,您有两种选择:
@override
Widget build(BuildContext context) {
final route = ModalRoute.of(context);
// This will NEVER fail
if (route == null) return SizedBox.shrink();
final routeArgs = route.settings.routeArgs;
return Scaffold(appBar: AppBar(title: Text('details')));
}
@override
Widget build(BuildContext context) {
// This is MOST LIKELY to not fail
final routeArgs = ModalRoute.of(context)!.settings.arguments;
return Scaffold(appBar: AppBar(title: Text('details')));
}