「Navigator.push」&「Navigator.pop()」、例えば、我々は2つのスクリーン、画面1とScreen2にを持っているを使用して、基本的なナビゲーションでは、我々は二つの画面間を移動します:
// Screen1.dartの インポート' パッケージ:フラッター/ material.dart ' ; インポート' screen2.dart ' ; クラス画面1はStatelessWidget {拡張 @Override ウィジェットのビルド(BuildContextコンテキスト){ リターン足場( アプリケーションバー(:アプリケーションバー のbackgroundColor:Colors.red、 タイトル:テキスト(' 画面1 ' )、 )、 ボディ:センター( 子:RaisedButton( 色:色を.red、 子供:テキスト(' ゴーフォワード2の画面に' )、 onPressed:(){ Navigator.push( コンテキスト、 MaterialPageRoute(ビルダー:(コンテキスト){ リターンScreen2に(); }) ); }、 )、 )、 )。 } }
Screen2.dart:
インポート' パッケージ:フラッター/ material.dart ' ; クラスScreen2にはStatelessWidget {拡張 @Override ウィジェットのビルド(BuildContextコンテキスト){ リターン足場( アプリケーションバー(:アプリケーションバー のbackgroundColor:Colors.blue、 タイトル:テキスト(' 画面2 ' )、 )、 ボディ:センター( 子:RaisedButton( 色:色を.blue、 子供:テキスト(' 戻るが、1画面に' )、 onPressed:(){ Navigator.pop(コンテキスト); }、 )、 )、 ); } }
名前のルートを使用します:
main.dartでは、我々はすべてのルートを一覧表示することができます:
クラスのMyAppはStatelessWidget {延び @Override ウィジェット{(BuildContextコンテキスト)を構築 返す(MaterialAppを // Screen0():家庭 :initialRoute ' / ' 、 ルート:{ '/':(コンテキスト)=> Screen0() 「/第一「:(コンテキスト)=>画面1()、 '/秒':(コンテキスト)=> Screen2に() } )。 } }
気づいたことには:「ホーム」&「initialRoute」は同時に使用することはできません。
子:カラム( 子供: <ウィジェット> [ RaisedButton( 色:Colors.red、 子供:テキスト(' 画面1に戻る' )、 onPressed:(){ Navigator.pushNamed(文脈、 '/第一' ); } ) 、 RaisedButton( 色:Colors.blue、 子:テキスト(' 画面2に進み' )、 onPressed:(){ Navigator.pushNamed(文脈、 '/秒' ); } )、 ]、 )、