没有为类型 'Widget' 定义 getter 'preferredSize'
Posted
技术标签:
【中文标题】没有为类型 \'Widget\' 定义 getter \'preferredSize\'【英文标题】: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,
【问题讨论】:
【参考方案1】:变量appBar请使用数据类型
final PreferredSizeWidge appBar = Platform.isIOS ? ......
【讨论】:
,如果它使用该数据类型“PreferredSizeWidget”,我会遇到另一个错误“Widget”类型的值无法分配给“PreferredSizeWidget”类型的变量。CupertinoNavigationBar
不是PreferredSizeWidget
。您可以更改 AppBar 属性以获得 IOS 原生的感觉,否则您将不得不使用 CupertinoPageScaffold
来代替 CupertinoNavigationBar
【参考方案2】:
将appbar
类型从PreferredSizeWidget
或Widget
更改为dynamic
【讨论】:
【参考方案3】:将代码改成如下格式。
final PreferredSizeWidget appBar = (Platform.isIOS ? CupertinoNavigationBar(...) : AppBar(...)) as PreferredSizeWidget;
【讨论】:
以上是关于没有为类型 'Widget' 定义 getter 'preferredSize'的主要内容,如果未能解决你的问题,请参考以下文章
Flutter Hive getter 没有为“hiveobjectmixin”类型定义
没有为类型 'QuerySnapshot<Map<String, dynamic>>' 定义 getter 'documents'