如果你需要給一個深度巢狀的小部件,訪問儲存在小部件樹頂部附近的資料。可以使用InheritedWidget;
你只需要建立一個你的子類,為你的資料新增一兩個欄位。
class MyAncestor extends InheritedWidget{
final Color colorOne;
final Color colorTwo;
const MyAncestor(this.colorOne,this.colorTwo,Widget child):super(child:child);
@override
bool updateShoudNotify(MyAncestor oldWidget){
return colorOne!=oldWidget.colorOne||colorTwo!=oldWidget.colorTwo
}
}
複製程式碼
並覆蓋updateShouldNotify方法,子控制元件可以獲取該控制元件中的資料:
Widget build(BuildContext context){
final ancestor = context.inheritFromWidgetOfExactType(MyAncestor);
return Container(
color:ancestor.colorTwo;
height:50.0,
width:50.0
);
)
複製程式碼