Flutter:小部件不是“ObstructingPreferredSizeWidget”类型的子类型

Posted

技术标签:

【中文标题】Flutter:小部件不是“ObstructingPreferredSizeWidget”类型的子类型【英文标题】:Flutter: Widget is not a subtype of type 'ObstructingPreferredSizeWidget' 【发布时间】:2020-08-31 06:21:49 【问题描述】:

我正在尝试将我的 AppBar 存储在一个变量中以使用多个位置

我的 main.dart 文件包含 -

final PreferredSizeWidget appBar = NavigationAppBar(_actionCall)

而navigation_app_bar 包含-

class NavigationAppBar extends StatelessWidget with PreferredSizeWidget 
  final Function actionCall;

  NavigationAppBar(this.actionCall);

  @override
  Widget build(BuildContext context) 
    return Platform.isios ? 
    CupertinoNavigationBar(
      middle: Text(
        'ABC'
      ),
      trailing: Row(
        mainAxisSize: MainAxisSize.min,
        children: <Widget>[
            GestureDetector(
              child: Icon(CupertinoIcons.add),
              onTap: () => actionCall,
            )
        ],
      ),
    ) : 
    AppBar(
      title: Text('ABC'),
      centerTitle: false,
      actions: <Widget>[
        IconButton(
          icon: Icon(Icons.add),
          onPressed: () => actionCall,
        )
      ],
    );
  

  @override
  Size get preferredSize => Size.fromHeight(kToolbarHeight);

但是在尝试运行我的颤振应用时出现以下错误。

type 'NavigationAppBar' is not a subtype of type 'ObstructingPreferredSizeWidget'

我该如何解决这个问题?感谢您提供任何帮助。

【问题讨论】:

【参考方案1】:

您是否尝试在代码的所有适用位置将 NavigationAppBar 替换为 PreferredSizeWidget?这对我有帮助。

我的问题有一点不同,因为我必须用 PreferredSizeWidget 替换 AppBar(不是 NavigationAppBar)。

这可能与 Flutter 最新版本的一些变化有关。

【讨论】:

以上是关于Flutter:小部件不是“ObstructingPreferredSizeWidget”类型的子类型的主要内容,如果未能解决你的问题,请参考以下文章

iOS 和 Android Flutter 小部件是不是也适用于 Flutter Web(PWA)

Flutter:在浮动操作按钮中使用 appBar 小部件而不是 appBar?

Flutter:在屏幕上拖动小部件(不是拖放)

“ValueNotifier”+“ValueListenableBuilder”是不是适用于 Flutter 中的“许多”小部件?

Flutter:小部件不是“ObstructingPreferredSizeWidget”类型的子类型

检查图像是不是已加载到 Flutter 中的 Image.network 小部件中