Flutter升级更新2.0后常见报错处理

Flutter SDK更新后,经常会出现一些错误。尤其是Flutter 2.0,有些API也跟着变动了,真是牵一发而动全身啊,非常坑。
以下是我更新2.0后老项目的报错解决方法。

报错信息:Error: No named parameter with the name ‘resizeToAvoidBottomPadding’

原因:resizeToAvoidBottomPadding在新版本的Scaffold中被resizeToAvoidBottomInset属性取代了,替换即可。

Scaffold(
	// resizeToAvoidBottomPadding: false,
	resizeToAvoidBottomInset: false,
	..........
)

BuildContext方法改动

报错信息:The method ‘ancestorWidgetOfExactType‘ isn‘t defined for the type ‘BuildContext‘

原因:BuildContext的ancestorWidgetOfExactType被findAncestorStateOfType替代,并且没有了参数,在泛型中传入需要获取的Widget即可。
ancestorWidgetOfExactType ----> findAncestorWidgetOfExactType

// SliverAppBar sliverAppBar = context.ancestorWidgetOfExactType(SliverAppBar);
SliverAppBar sliverAppBar = context.findAncestorStateOfType<SliverAppBar>();

报错信息:Error: The method ‘ancestorStateOfType’ isn’t defined for the class ‘BuildContext’.

2.0之前的写法

ComplexLayoutState state = context.ancestorStateOfType(const TypeMatcher<ComplexLayoutState>()) as ComplexLayoutState;

2.0之后的用法

ComplexLayoutState state = context.ancestorStateOfType<ComplexLayoutState>();

报错信息:Error: The method ‘inheritFromWidgetOfExactType’ isn’t defined for the class ‘BuildContext’.

原因:dependOnInheritedWidgetOfExactType()被dependOnInheritedWidgetOfExactType替代,并且参数是个可选命名参数,需要加上aspect。

// context.dependOnInheritedWidgetOfExactType(_xxxProvider)
context.dependOnInheritedWidgetOfExactType(aspect: _xxxProvider)

报错信息:Error: Method not found: ‘TypeMatcher’.

2.0中,TypeMatcher这个类已经被移除,ancestorStateOfType方法中也没有TypeMatcher这个参数了。

报错信息:Error: No named parameter with the name ‘nullOk’.

原因:在Flutter2.0中,很多类的of(..)静态方法中的nullok参数被移除了,比如Scaffold.of()Localizations.localeOf()Navigation.of(),都不需要nullok参数了。

// final ScaffoldState scaffold = Scaffold.of(context, nullOk: true);
final ScaffoldState scaffold = Scaffold.of(context);

// Localizations.localeOf(context, nullOk: true);
Localizations.localeOf(context);

报错信息:Error: Method not found: ‘CupertinoPageRoute.buildPageTransitions’.

报错信息:Error: The getter ‘title’ isn’t defined for the class ‘TextTheme’

widget.textTheme?.title

报错信息:Error: The getter ‘body1’ isn’t defined for the class ‘TextTheme’.

widget.textTheme?.body1
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值