親コンポーネントのパラメータを変更する親コンポーネントサブアセンブリメソッドを呼び出すフラッタ

メインの実現の子コンポーネントは、コンポーネントのメソッド親がメソッドに渡された親コンポーネントのサブアセンブリでコールし、その後、サブアセンブリ内の親引数を変更するために、親メソッドを呼び出します。レンダリングを見てください

親コンポーネントの実装

親コンポーネント書面で_editParentText変性成分の方法はcontentText値およびサブアセンブリの導入時にメソッドに渡さを

クラスPageParentは{StatefulWidgetを拡張
  @Override 
  _PageParentState createState()=> _PageParentState(); 
} 

クラス_PageParentStateはステート<PageParent> {延びている
  文字列をcontentText。

  @Override 
  ウィジェットの構築(BuildContextコンテキスト){ 
    リターン足場(
      アプリケーションバー:アプリケーションバー(
        タイトル:テキスト( '父级组件')、 
      )、
      ボディ:コンテナ(
        アライメント:Alignment.center、
        子供:カラム(
          子供:<ウィジェット> [ 
            コンテナ(
              パディング:EdgeInsets.all(20)、
              子供:カラム(
                子供:<ウィジェット> [ 
                  テキスト( '这里是父级组件参数'、)、
                  テキスト( 'contentText $ {}'、スタイル:TEXTSTYLE(色:Colors.red))
                ]、 
              )、
            )、 
            _editParentTextを渡す(のEditText)=> _editParentText(のEditText))//サブアセンブリ:PageChildren(editParentText ()メソッド
          ] 
    ); 
  }  //パラメータ変更contentText 
  _editParentText(のEditText){ 
    SETSTATE((){ 
      contentText =のEditText; 
    }); 
  } 
}

  

子ページは達成することです

ページ子で定義されているでeditParentTextの親上パスを受信するための方法、及び、直接介してwidget.editParentText(「返されるパラメータ」)即ちコール親コンポーネント_editParentText方法

クラスPageChildrenはStatefulWidget {延び
  最終editParentTextと、
  CONST PageChildren({キーキー、this.editParentText}):スーパー(キー:キー)
  @Override 
  _PageChildrenState createState()=> _PageChildrenState(); 
} 

クラス_PageChildrenStateはステート<PageChildren> {延び
  TextEditingController _controller = TextEditingController()。
  @Overrideの
  ウィジェットのビルド(BuildContextコンテキスト){ 
    (コンテナを返し
      アライメント:Alignment.center、
      色:Colors.grey、
      子供:カラム(
        子供:<ウィジェット> [ 
          テキスト( '这里是子级组件')、
          コンテナ(
            幅:200 、 
            色:色。白、 
            マージン:EdgeInsets.symmetric(縦:30)、
            子供:テキストフィールド(
              コントローラ:_controller、 
            )、
          )、 
          RaisedButtonは(
            子:( 'パラメータを変更する'テキスト)、
            onPressed:(){ 
              SETSTATE(() { 
                widget.editParentText(_controller.text); //親の組立方法を呼び出します
              }); 
            } 
        ] 
    ); 
  } 

}

  

 

おすすめ

転載: www.cnblogs.com/gxsyj/p/11121002.html