[フラッター]ルータナビゲーション

「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(文脈、
                 '/秒' ); 
              } 
            )、
          ]、 
        )、

 

おすすめ

転載: www.cnblogs.com/Answer1215/p/11668107.html