【问题标题】:The getter 'preferredSize' isn't defined for the type 'Widget'没有为类型 'Widget' 定义 getter 'preferredSize'
【发布时间】:2021-07-27 10:12:44
【问题描述】:

@override
  Widget build(BuildContext context) {
    final mediaQuery = MediaQuery.of(context);
    final isLandscape = mediaQuery.orientation == Orientation.landscape;
    final appBar = Platform.isIOS
        ? CupertinoNavigationBar(
            middle: Text(
              'Personal Expenses',
            ),
            trailing: Row(
              mainAxisSize: MainAxisSize.min,
              children: <Widget>[
                GestureDetector(
                  child: Icon(CupertinoIcons.add),
                  onTap: () => _startAddNewTransaction(context),
                ),
              ],
            ),
          )
        : AppBar(
            title: Text(
              'Personal Expenses',
            ),
            actions: <Widget>[
              IconButton(
                icon: Icon(Icons.add),
                onPressed: () => _startAddNewTransaction(context),
              ),
            ],
          );

没有为类型 'Widget' 定义 getter 'preferredSize'。

    final txListWidget = Container(
      height: (mediaQuery.size.height -
              appBar.preferredSize.height -
              mediaQuery.padding.top) *
          0.7,

参数类型“Widget”不能赋值给参数类型“ObstructingPreferredSizeWidget?”

 return Platform.isIOS
    ? CupertinoPageScaffold(
        child: pageBody,
        navigationBar: appBar,
      )

参数类型“Widget”不能分配给参数类型“PreferredSizeWidget?”

: Scaffold(
        appBar: appBar,
        body: pageBody,

【问题讨论】:

    标签: flutter dart


    【解决方案1】:

    变量appBar请使用数据类型

    final PreferredSizeWidge appBar = Platform.isIOS ? ......
    

    【讨论】:

    • ,如果它使用该数据类型“PreferredSizeWidget”,我会遇到另一个错误“Widget”类型的值无法分配给“PreferredSizeWidget”类型的变量。
    • CupertinoNavigationBar 不是PreferredSizeWidget。您可以更改 AppBar 属性以获得 IOS 原生的感觉,否则您将不得不使用 CupertinoPageScaffold 来代替 CupertinoNavigationBar
    【解决方案2】:

    appbar 类型从PreferredSizeWidgetWidget 更改为dynamic

    【讨论】:

      【解决方案3】:

      将代码改成如下格式。

      final PreferredSizeWidget appBar = (Platform.isIOS ? CupertinoNavigationBar(...) : AppBar(...)) as PreferredSizeWidget;
      

      【讨论】:

        猜你喜欢
        • 2021-11-22
        • 1970-01-01
        • 2020-09-02
        • 2021-07-23
        • 2022-10-09
        • 2021-10-19
        • 2021-08-29
        • 2021-05-21
        • 2021-02-03
        相关资源
        最近更新 更多