【问题标题】:Flutetr return widget when its maybe can be null and getting error颤振返回小部件时可能为空并出现错误
【发布时间】:2021-04-28 08:37:54
【问题描述】:

在可选的类构造函数中,我们有:

final Widget? errorScreen;
const NoNetwork({Key? key, this.errorScreen}) : super(key: key);

build 方法中,我想检查它是否不为空,widget.errorScreen 应该返回,否则应该返回Scaffold

class _NoNetworkState extends State<NoNetwork> {
  @override
  Widget build(BuildContext context) {
    if (widget.errorScreen == null) {
      return Scaffold(
        body: Center(
             ///
        ),
      );
    } else {
      return widget.errorScreen;
    }
  }
}

因为errorScreen 可以为空,我们为此使用了? 通配符,我收到此错误:

'Widget?' 类型的值无法从“build”方法返回 因为它的返回类型是 'Widget'。

使用NoNetwork 类的简化:

class NetworkSensitive extends StatelessWidget {
  ///

  @override
  Widget build(BuildContext context) {
    ///
    if (connectionStatus == ConnectivityStatus.WiFi) {
      return child;
    }

    ///

    return const NoNetwork();
  }
}

【问题讨论】:

    标签: flutter dart


    【解决方案1】:

    只需添加!最后

    return widget.errorScreen!;
    

    这样你就表明它不能为空。

    【讨论】:

      【解决方案2】:

      你也可以试试这样的:

      class _NoNetworkState extends State<NoNetwork> {
        @override
        Widget build(BuildContext context) {
          if (widget.errorScreen == null) {
            return Scaffold(
              body: Center(
                   ///
              ),
            );
          } else {
            return widget.errorScreen ?? Container();
          }
        }
      }
      

      【讨论】:

        猜你喜欢
        • 2022-10-14
        • 2020-07-23
        • 2020-04-13
        • 2021-06-11
        • 1970-01-01
        • 2018-08-11
        • 1970-01-01
        • 2020-04-01
        • 2021-06-17
        相关资源
        最近更新 更多