12、Flutter Widget - InheritedModel;

Melrose發表於2019-03-05

  如果你需要給一個深度巢狀的小部件,訪問儲存在小部件樹頂部附近的資料。可以使用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
);

)
複製程式碼

相關文章