如何將屬性傳遞給 flutter.js 中的小部件類。
這是一個基本類
class ToolbarToggle extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Text(label);
}}
我希望能夠呼叫它
ToolbarToggle(label: 'a label')
原諒這個基本問題。
uj5u.com熱心網友回復:
class ToolbarToggle extends StatelessWidget {
final String? label;
const ToolbarToggle({this.label, Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return Text(label ?? 'label is null');
}}
像這樣,你可以傳遞屬性,建議使用const建構式和一個key引數(唯一標識柜面)
uj5u.com熱心網友回復:
首先宣告一個 label 屬性,如下所示:
class ToolbarToggle extends StatelessWidget {
final String label;
@override
Widget build(BuildContext context) {
return Text(label);
}
}
final 意味著該值是不可變的,您應該將其添加到 StatelessWidget 的每個屬性中。
現在我們需要宣告一個建構式,這是我們如何做到的:
ToolbarToggle(this.label);
這意味著,在創建ToolbarToggle的時候,我們可以這樣做:ToolbarToggle('some label');。為了使引數命名,我們需要像這樣宣告建構式:
ToolbarToggle({this.label});
現在可以呼叫ToolbarToggle(label: 'my label');. 但這會產生錯誤,因為您可能在呼叫建構式時實際上并未傳遞任何值。要解決此問題,您應該將其設為必需引數,或為其提供默認值:
ToolbarToggle({required this.label});
ToolbarToggle({this.label=''});
這是最終的類代碼:
class ToolbarToggle extends StatelessWidget {
ToolbarToggle({required this.label});
final String label;
@override
Widget build(BuildContext context) {
return Text(label);
}
}
uj5u.com熱心網友回復:
你錯過了使用 label
class ToolbarToggle extends StatelessWidget {
final String label;
ToolbarToggle({required this.label});
@override
Widget build(BuildContext context) {
return Text(label);
}}
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/334151.html
