簡體   English   中英

如何使用 Dart 中的參數定義默認 function?

[英]How to define a default function with parameters in Dart?

我正在 Flutter 中開發移動應用程序,並在嘗試將 function 作為參數傳遞給小部件時遇到問題。

更准確地說:


class Test extends StatefulWidget {
  final Function(bool) onChanged;
  const Test({Key key, this.onChanged}) : super(key: key);

  @override
  _TestState createState() => _TestState();
}

class _TestState extends State<Test> {
  bool switchValue = false;
  @override
  Widget build(BuildContext context) {
    return Container(
        child: Switch(
            value: switchValue,
            onChanged: (bool value) {
              setState(() => switchValue = value);
              widget.onChanged(value);
            }));
  }
}

當在未定義 onChanged function 的情況下使用小部件時,它會拋出 NoSuchMethodError: "The method 'call' was called on null"。 如何為 onChanged 參數定義默認的 function? 該參數應該是可選的。 我嘗試過:

  • ( ) { } - 'Null Function( )' 類型的值不能分配給'dynamic Function(bool)' 類型的變量。
  • (bool) { } - 可選參數的默認值必須是常量。

不使用默認值的解決方案是:

  • 在調用它之前檢查 onChange 參數是否不是 null,或者
  • 每次使用小部件時定義它 - onChanged: (bool val) { }

任何建議,將不勝感激。

您可以像這樣定義默認的 function。

void emptyFunction(bool value) {
  if (value) {
    // do something
  } else {
    // do something
  }
}
const Test({Key key, this.onChanged = emptyFunction}) : super(key: key);

您可以在 dartpad 上查看顯示此操作的示例代碼。 https://dartpad.dev/30fc0fdc02bec673779eebc733753c05

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM