不推荐使用 inheritFromWidgetOfExactType 代替使用 DependOnInheritedWidgetOfExactType

Jos*_*Jet 48 dart flutter

自 Flutter 1.12 发布以来,我的以下代码:

static MyInheritedWidget of(BuildContext context) {
  return context.inheritFromWidgetOfExactType(MyInheritedWidget) as MyInheritedWidget;
}
Run Code Online (Sandbox Code Playgroud)

警告如下:

'inheritFromWidgetOfExactType' 已弃用,不应使用。改用dependOnInheritedWidgetOfExactType。此功能在 v1.12.1 之后被弃用。尝试用替换来替换弃用成员的使用。

但是当我尝试更换它时,它不起作用:

static MyInheritedWidget of(BuildContext context) {
  return context.dependOnInheritedWidgetOfExactType(MyInheritedWidget) as MyInheritedWidget;
}
Run Code Online (Sandbox Code Playgroud)

有人知道怎么做吗?谢谢!

Rém*_*let 171

API 略有变化。

现在Type,该方法不是将 a作为参数,而是通用的。

前:

final widget = context.inheritFromWidgetOfExactType(MyInheritedWidget) as MyInheritedWidget;
Run Code Online (Sandbox Code Playgroud)

后:

final widget = context.dependOnInheritedWidgetOfExactType<MyInheritedWidget>();
Run Code Online (Sandbox Code Playgroud)

请注意,不再需要演员表

  • 谢谢你!我在这里也找到了它:https://github.com/flutter/flutter/blob/master/packages/flutter/test/widgets/inherited_test.dart (2认同)

Kab*_*uda 6

InheritFromWidgetOfExactType方法已弃用,请改用dependentOnInheritedWidgetOfExactType方法。

替换示例

之前:使用InheritFromWidgetOfExactType

static Name of(BuildContext context) {
  return context.inheritFromWidgetOfExactType(Name);  //here
}
Run Code Online (Sandbox Code Playgroud)

现在使用dependOnInheritedWidgetOfExactType(推荐)

static Name of(BuildContext context) {
  return context.dependOnInheritedWidgetOfExactType<Name>();  //here
}
Run Code Online (Sandbox Code Playgroud)

现在该方法不再采用 aType作为参数,而是通用的。
简短<...>()而不是(...)