【问题标题】:Observer with switch : The body might complete normally, causing 'null' to be returned, but the return type is a potentially non-nullable type带开关的观察者:主体可能正常完成,导致返回“null”,但返回类型可能是不可为空的类型
【发布时间】:2021-08-07 23:46:36
【问题描述】:

我的 Observer 小部件开头的“{”处出现此错误。我也尝试过 break 语句。 我做错了什么?

     Observer(builder: (_) {
                  switch (_argumentStore!.myTileShowBankedArgumentState) {
                    case (showMyTileBankedArgumentSelectedState
                        .notSelected):
                      return RaisedButton(
                        disabledColor: Color(0xFFFFC4A5),
                        shape: RoundedRectangleBorder(
                          borderRadius: new BorderRadius.circular(30.0),
                        ),
                        onPressed: null,
                        child: Text(
                          'Hello1 ',
                        ),
                      );
             
                    case (showMyTileBankedArgumentSelectedState.Selected):
                      RaisedButton(
                        disabledColor: Color(0xFFFFC4A5),
                        shape: RoundedRectangleBorder(
                          borderRadius: new BorderRadius.circular(30.0),
                        ),
                        onPressed: null,
                        child: Text(
                          'Hello2 ',
                        ),
                      );
              
                  }
                })

【问题讨论】:

  • 你在第二个case中缺少return

标签: flutter dart


【解决方案1】:

你必须从第二种情况返回:

Observer(builder: (_) {
  switch (_argumentStore!.myTileShowBankedArgumentState) {
    case (showMyTileBankedArgumentSelectedState.notSelected):
      return RaisedButton(...);  

    case (showMyTileBankedArgumentSelectedState.Selected):
      // Add a `return` statement here:
      return RaisedButton(...);
})

如果错误仍然存​​在,您必须添加default 案例:

Observer(builder: (_) {
  switch (_argumentStore!.myTileShowBankedArgumentState) {
    case (showMyTileBankedArgumentSelectedState.notSelected):
      return RaisedButton(...);  

    case (showMyTileBankedArgumentSelectedState.Selected):
      return RaisedButton(...);

    default:
      // This will be reached if
      // 1) myTileShowBankedArgumentState is null
      // 2) myTileShowBankedArgumentState is neither notSelected nor Selected
      // You can raise an error or return an appropriate widget
      throw StateError("invalid state");

})

【讨论】:

  • 很高兴为您提供帮助!如果我的回答对您有帮助,您可以通过点击大勾号将其选为已接受的答案来接受它,这样回答的人就可以专注于仍然没有答案的旧问题。
  • 谢谢恩佐!抱歉我没有早点回复。我之前也投过票。但是说我需要 15 声望才能进行种姓投票。再次感谢您的帮助
猜你喜欢
  • 2021-11-15
  • 2021-09-29
  • 1970-01-01
  • 2022-10-14
  • 2021-06-26
  • 2022-08-06
  • 2021-11-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多