[英]null safety on widget parameter
在 null-safety 之前,我可以通過小部件,如果檢查它是 null,將顯示其他小部件。 在空安全環境中,如果我沒有傳遞小部件image
或note
,有沒有辦法?
class Message extends StatelessWidget {
const Message({
Key key,
this.image,
this.title = "",
this.subtitle = "",
this.note,
this.onTap
}) : super(key: key);
final Widget image;
final String title;
final String subtitle;
final Widget note;
final Function onTap
@override
Widget build(BuildContext context) {
return GestureDetector(
onTap: onTap,
child: Column(
children:[
image ?? Container(),
if(note != null) note
]
)
);
}
};
您可以將圖像和注釋聲明為可為空的類型。 如果您需要將任何字段設為必填,您可以將其標記為required 。
class Message extends StatelessWidget {
const Message({
Key? key,
this.image,
this.title = "",
this.subtitle = "",
this.note,
required this.onTap,
}) : super(key: key);
final Widget? image;
final String title;
final String subtitle;
final Widget? note;
final VoidCallback onTap;
@override
Widget build(BuildContext context) {
return GestureDetector(
onTap: onTap,
child: Column(
children:[
image ?? Container(),
note ?? Container(),
]
)
);
}
}
使用?
如果孩子可以是null
。
class FooWidget extends StatelessWidget { final Widget? child; // <-- Nullable, use '?' FooWidget({ this.child, }); //... }
如果孩子不能是null
,則required
使用。
class FooWidget extends StatelessWidget { final Widget child; // <-- Non-nullable FooWidget({ required this.child, // <-- Use 'required' }); //... }
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.