Android 在颤振中:必要的;“必需”;提取小部件时的关键字
我正在开发一个应用程序,一开始我提取了一个小部件,使我的代码整洁有序 当我给构造函数参数时,它迫使我添加“required”关键字,这在之前是不必要的 我怎么能忽视它Android 在颤振中:必要的;“必需”;提取小部件时的关键字,android,flutter,android-studio,Android,Flutter,Android Studio,我正在开发一个应用程序,一开始我提取了一个小部件,使我的代码整洁有序 当我给构造函数参数时,它迫使我添加“required”关键字,这在之前是不必要的 我怎么能忽视它 class NewWidget extends StatelessWidget { NewWidget({this.text, this.onPress}); final String text; final Function onPress; @override Widget build(BuildCont
class NewWidget extends StatelessWidget {
NewWidget({this.text, this.onPress});
final String text;
final Function onPress;
@override
Widget build(BuildContext context) {
return Padding(
padding: EdgeInsets.all(15.0),
child: Card(
color: Colors.blueAccent,
elevation: 5.0,
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(10.0),
),
child: TextButton(
child: Padding(
padding: EdgeInsets.symmetric(vertical: 5.0, horizontal: 100.0),
child: Text(
text,
style: TextStyle(
fontSize: 32.0,
color: Colors.white,
),
),
),
onPressed: onPress(),
),
),
);
}
}
这是我收到的通知
由于其类型,参数“text”的值不能为“null”,但隐式默认值为“null”。尝试添加显式非“null”默认值或“required”修饰符
它来自Dart的安全性,您的两个参数被定义为不可为null的变量,但它们在构造函数中是可选的,这意味着编译器无法推断您的
文本变量的类型是String
还是String?
,也无法确定onPress
是否为函数功能?
您需要将参数作为required
传递,或者将它们声明为可空,并检查它们是否为null
。以下是两种情况的示例:
添加所需内容
class NewWidget扩展了无状态widget{
NewWidget({required this.text,required this.onPress});
最终字符串文本;
压力机的最终功能;
@凌驾
小部件构建(构建上下文){
返回填充(
填充:所有边缘设置(15.0),
孩子:卡片(
颜色:Colors.blueAccent,
标高:5.0,
形状:圆形矩形边框(
边界半径:边界半径。圆形(10.0),
),
孩子:文本按钮(
孩子:填充(
填充:边缘组。对称(垂直:5.0,水平:100.0),
子:文本(
文本,
样式:TextStyle(
字体大小:32.0,
颜色:颜色,白色,
),
),
),
onPress:onPress,
),
),
);
}
}
使用可为空的参数
class NewWidget扩展了无状态widget{
NewWidget({this.text,this.onPress});
最终字符串?文本;
最终功能?onPress;
@凌驾
小部件构建(构建上下文){
返回填充(
填充:所有边缘设置(15.0),
孩子:卡片(
颜色:Colors.blueAccent,
标高:5.0,
形状:圆形矩形边框(
边界半径:边界半径。圆形(10.0),
),
孩子:文本按钮(
孩子:填充(
填充:边缘组。对称(垂直:5.0,水平:100.0),
子:文本(
文本??“文本字符串为空”,
样式:TextStyle(
字体大小:32.0,
颜色:颜色,白色,
),
),
),
onPress:()=>onPress!(),
),
),
);
}
}
请共享您的代码,以便我们可以查看itI是否已共享。是的,现在命名参数应包含在dart的空安全版本中。但是,如果您希望它是可选的,请使用最终字符串?文本
;没错,我希望它是可选的,这是有用的,但我还面临着其他一些问题。。我在“onPress”参数中添加的函数是navigator,但当我添加它时,它并没有进入distination页面!!!