如何在 dart flutter 中将 widget 作为默认参数传递?

问题描述 投票:0回答:1

我正在创建一个全屏加载程序,如果用户不将任何小部件传递给此函数,我想在其中设置默认的圆形进度指示器..

但是显示错误

我的错误是什么

static void showFullScreenDialog({Widget widget=Text('hello')//showing an error} ){
    showDialog(
        context: Get.overlayContext!,
        barrierDismissible: false,
        builder: (_) => PopScope(
            canPop: false,
            child: Container(
          height: double.infinity,
          width: double.infinity,
          color: Colors.transparent,
          child: Center(child: widget,),
        )),
        );
  }
flutter
1个回答
0
投票

您还没有分享错误消息,但我可以猜测问题的根源。当创建一个小部件作为函数参数中的默认值时,需要在构建时创建该小部件。然而,

Text('hello')
是在运行时创建的。

static void showFullScreenDialog({
  Widget Function()? widgetBuilder,
}) {
  showDialog(
    context: Get.overlayContext!,
    barrierDismissible: false,
    builder: (_) => PopScope(
      canPop: false,
      child: Container(
        height: double.infinity,
        width: double.infinity,
        color: Colors.transparent,
        child: Center(
          // Use widgetBuilder if provided, otherwise show default CircularProgressIndicator
          child: widgetBuilder != null
              ? widgetBuilder()
              : const CircularProgressIndicator(),
        ),
      ),
    ),
  );
}
© www.soinside.com 2019 - 2024. All rights reserved.