Flutter:如何跳轉頁面?

目錄傳送門:《Flutter快速上手指南》先導篇git

1.Flutter 中的頁面

前面提到過,在 Flutter 中萬物皆 Widget,頁面天然也是一個 Widget。github

只不過是一個全屏的 Widget。bash

如下這個 Widget 就能夠做爲一個頁面:app

class SplashPage extends StatelessWidget {
  final splashUrl =
      'https://raw.githubusercontent.com/chenBingX/img/master/其它/u=343452579,826911251&fm=26&gp=0.jpg';

  @override
  Widget build(BuildContext context) {
    // TODO: implement build
    return Stack(
      alignment: Alignment(0, 0.75),
      children: <Widget>[
        Container(
          decoration: BoxDecoration(
              image: DecorationImage(image: NetworkImage(splashUrl))),
        ),
        GestureDetector(
          // 設置點擊事件
          onTap: () {
            // 使用 Navigator 跳轉頁面
            Navigator.push(context, MaterialPageRoute(builder: (_) {
              return HomePage();
            }));
          },
          child: Container(
              width: 100,
              height: 40,
              decoration: BoxDecoration(
                borderRadius: BorderRadius.all(Radius.circular(6)),
                gradient: LinearGradient(
                  colors: <Color>[Colors.red, Colors.green, Colors.blue],
                ),
              ),
              child: Center(
                  child: Text(
                "Next",
                style: TextStyle(color: Colors.white, fontSize: 16),
              ))),
        ),
      ],
    );
  }
}

複製代碼

應用頁面:less

void main() => runApp(MaterialApp(
      title: 'Flutter',
      home: SplashPage(),
    ));
複製代碼

看看效果:ide

2.使用 Navigator 跳轉頁面

在 Flutter 中,使用 Navigator 來進行頁面跳轉。post

一個簡單的跳轉頁面的例子:ui

Navigator.push(context, MaterialPageRoute(builder: (_) {
            // 目標頁面,即一個 Widget
            return DetailScreen();
複製代碼

若是想要關閉一個頁面,能夠這樣作:spa

Navigator.pop(context);
複製代碼

咱們再構建一個 Scaffold 風格的頁面,看看跳轉的效果。3d

class HomePage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    // TODO: implement build
    return Scaffold(
      appBar: AppBar(
        title: Text('Home Page'),
      ),
      body: Container(
        color: Colors.white,
        child: Center(
          child: Text('This Home Pahe'),
        ),
      ),
    );
  }
}
複製代碼

看看效果:

3.經過頁面名稱跳轉

Navigator 支持經過頁面名稱跳轉到指定頁面。

固然,你須要先註冊頁面,在 MaterialApproutes 中。

MaterialApp(
  // 設置第一個頁面,即啓動頁
  initialRoute: '/',
  routes: {
    // 註冊一個頁面
    '/': (context) => FirstScreen(),
    // 註冊第二個頁面
    '/second': (context) => SecondScreen(),
  },
);
複製代碼

如今,你能夠經過剛剛註冊的頁面名稱來跳轉一個頁面,就像這樣:

Navigator.pushNamed(context, '/second');複製代碼

目錄傳送門:《Flutter快速上手指南》先導篇

如何找到我?

傳送門:CoorChice 的主頁

傳送門:CoorChice 的 Github

相關文章
相關標籤/搜索