最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Flutter使用push pop方法及路由進(jìn)行導(dǎo)航詳解

 更新時(shí)間:2022年09月29日 08:50:30   作者:Jimmy  
這篇文章主要為大家介紹了Flutter使用push pop方法及路由進(jìn)行導(dǎo)航詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

正文

Web/Mobile 應(yīng)用程序中,導(dǎo)航是一個(gè)很重要的特性,因?yàn)樗试S你從一個(gè)頁面跳轉(zhuǎn)到另一個(gè)頁面。

flutter 應(yīng)用程序中,我們可以使用 push(), pop() 方法實(shí)現(xiàn)導(dǎo)航,或者編寫我們自己的路由。

準(zhǔn)備工作

我們假設(shè) FirstScreenSecondScreen 是兩個(gè)不同的類,分別在各自的 FirstScreen.dartSecondScreen.dart 文件內(nèi)。

FirstScreen.dart 文件如下:

import 'package:flutter/material.dart';
import 'package:navigation/SecondScreen.dart';
class FirstScreen extends StatefulWidget {
  @override
  _FirstScreenState createState() => _FirstScreenState();
}
class _FirstScreenState extends State<FirstScreen> {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
      title: Text("First Screen"),
    ),
    body: Column(
      mainAxisAlignment: MainAxisAlignment.center,
      children: <Widget>[
        Text(
          "Hello to First Screen",
          style: TextStyle(
            fontSize: 20,
          ),
        ),
        SizedBox(
          height: 10,
        ),
        Center(
          child: RaisedButton(
            onPressed: () {},
            child: Text(
              "First Screen",
              style: TextStyle(
                fontSize: 20,
                fontWeight: FontWeight.bold
              ),
            ),
          ),
        ),
      ],
    ),
   );
  }
}

SecondScreen.dart 文件如下:

import 'package:flutter/material.dart';
class SecondScreen extends StatefulWidget {
  @override
  _SecondScreenState createState() => _SecondScreenState();
}
class _SecondScreenState extends State<SecondScreen> {
  @override
  Widget build(BuildContext context) {
  return Scaffold(
    appBar: AppBar(
      title: Text("Second Screen"),
    ),
    body: Column(
      mainAxisAlignment: MainAxisAlignment.center,
      children: <Widget>[
        Text(
          "Welcome on Second Screen",
          style: TextStyle(
            fontSize: 20,
          ),
        ),
        SizedBox(
          height: 10,
        ),
        Center(
          child: RaisedButton(
            onPressed: () {},
            child: Text(
              "Second Screen",
              style: TextStyle(
                fontSize: 20,
                fontWeight: FontWeight.bold
              ),
            ),
          ),
        ),
      ],
    ),
  );
 }
}

main.dart 的內(nèi)容如下:

import 'package:flutter/material.dart';
import 'package:navigation/FirstScreen.dart';
void main() {
  runApp(MaterialApp(
      home: FirstScreen()));
}

第一種導(dǎo)航方式

我們可以使用 Navigator.push() 方法和 Navigator.pop() 方法進(jìn)行頁面/屏幕導(dǎo)航。

為了觸發(fā) RaisedButton 事件后從 FirstScreen 導(dǎo)航到 SecondScreen。我們需要在 FirstScreenbuild() 方法里面的 RaisedButtononPressed(){} 添加如下的事件:

onPressed: () {
  Navigator.push(context, MaterialPageRoute(builder: (context) => SecondScreen()));
},

Navigator.push() 方法將給定的路由推送到路由棧中,這個(gè)路由是由 Navigator 類來維護(hù)。

現(xiàn)在,我們可以使用 MaterialPageRoute路由 或者我們可以創(chuàng)建自己的路由。

將一個(gè)新的路由添加到棧中,我們可以通過一個(gè) builder 函數(shù)創(chuàng)建一個(gè) MaterialPageRoute 的實(shí)例。builder 函數(shù)可以創(chuàng)建我們想在頁面中展示的掛件。

(context) => SecondScreen() 指向 SecondSreen 上下文。

為了通過 RaisedButton 點(diǎn)擊事件,從 SecondScreen 返回到 FirstScreen 頁面:我們需要在 SecondScreen 頁面中添加如下的內(nèi)容:

onPressed: () {
  Navigator.pop(context);
}

這里的 pop() 方法是將導(dǎo)航棧中最新的路由彈出。

第二種導(dǎo)航方式

通過 MaterialApp 構(gòu)造函數(shù)額外提供的屬性:initialRouteroutes。

import 'package:flutter/material.dart'
import 'package:navigation/FirstScreen.dart'
import 'package:navigation/SecondScreen.dart'
void main() {
  runApp(MaterialApp(
    initialRoute: '/firstScreen',
    routes: {
      '/firstScreen': (context) => FirstScreen(),
      '/secondScreen': (context) => SecondScreen(),
    },
    home: FirstScreen(),
  ));
}

initialRoute 屬性定義應(yīng)用應(yīng)該從哪個(gè)路由開始。routes 屬性定義有哪些路由是可以獲取的,且路由導(dǎo)航到哪些掛件。

這里,當(dāng)路由導(dǎo)航到 /firstScreen 時(shí),FirstScreen 掛件將構(gòu)建。

現(xiàn)在,我們將 FirstScreenonPressed(){} 的方法更改如下:

onPressed: () {
  Navigator.pushNamed(context, '/secondScreen');
}

這里使用命名路由 Navigator.pushNamed() 導(dǎo)航到第一個(gè)頁面。

SecondScreenonPressed(){} 事件中,還是保留使用 Navigator.pop() 方法:

onPressed: () {
 Navigator.pop(context);
}

以上就是Flutter使用push pop方法及路由進(jìn)行導(dǎo)航詳解的詳細(xì)內(nèi)容,更多關(guān)于Flutter push pop方法路由導(dǎo)航的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Android中g(shù)etActivity()為null的解決辦法

    Android中g(shù)etActivity()為null的解決辦法

    在Android開發(fā)的時(shí)候可能遇過出現(xiàn)getActivity()出現(xiàn)null的時(shí)候?qū)е鲁绦驁?bào)出空指針異常,那么遇到這種情況改如何解決,下面跟著小編一起去看看。
    2016-08-08
  • iOS實(shí)現(xiàn)3D卡片式輪播效果

    iOS實(shí)現(xiàn)3D卡片式輪播效果

    這篇文章主要為大家詳細(xì)介紹了iOS實(shí)現(xiàn)3D卡片式輪播效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-02-02
  • iOS App通信之local socket示例

    iOS App通信之local socket示例

    這篇文章主要介紹了iOS App之間的通信 -local socket示例的相關(guān)資料,需要的朋友可以參考下
    2016-09-09
  • iOS11 WKWebView 無法加載內(nèi)容的解決方法

    iOS11 WKWebView 無法加載內(nèi)容的解決方法

    這篇文章主要介紹了iOS11 WKWebView 無法加載內(nèi)容,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-11-11
  • iOS下拉選擇菜單簡單封裝

    iOS下拉選擇菜單簡單封裝

    這篇文章主要為大家詳細(xì)介紹了iOS下拉選擇菜單封裝代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-11-11
  • iOS常見宏理解及使用方法

    iOS常見宏理解及使用方法

    這篇文章主要給大家介紹了關(guān)于iOS常見宏理解及使用方法的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)各位iOS開發(fā)者們具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • WKWebView、WebView和JS的交互方式詳解

    WKWebView、WebView和JS的交互方式詳解

    這篇文章主要給大家介紹了關(guān)于WKWebView、WebView和JS的交互方式,文中通過示例代碼介紹的非常詳細(xì),對(duì)各位iOS開發(fā)者們具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2018-04-04
  • IOS點(diǎn)擊按鈕隱藏狀態(tài)欄詳解及實(shí)例代碼

    IOS點(diǎn)擊按鈕隱藏狀態(tài)欄詳解及實(shí)例代碼

    這篇文章主要介紹了IOS點(diǎn)擊按鈕隱藏狀態(tài)欄詳解及實(shí)例代碼的相關(guān)資料,需要的朋友可以參考下
    2017-02-02
  • iOS項(xiàng)目的開發(fā)命名規(guī)范教程

    iOS項(xiàng)目的開發(fā)命名規(guī)范教程

    為了團(tuán)隊(duì)各成員之間代碼的互通、可讀、易維護(hù)性,特制訂此開發(fā)規(guī)范。下面這篇文章主要給大家介紹了關(guān)于iOS項(xiàng)目的開發(fā)命名規(guī)范的相關(guān)資料,需要的朋友可以參考借鑒,下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-11-11
  • 淺談SwiftUI 里面$0是什么意思如何用

    淺談SwiftUI 里面$0是什么意思如何用

    這篇文章主要介紹了淺談SwiftUI 里面$0是什么意思如何用,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-01-01

最新評(píng)論

永昌县| 建湖县| 炎陵县| 越西县| 济宁市| 会同县| 精河县| 玛多县| 津市市| 靖宇县| 美姑县| 蓬安县| 浦江县| 丰镇市| 五寨县| 和林格尔县| 湟源县| 闵行区| 阳山县| 嘉义市| 灵川县| 肥东县| 巴林左旗| 光山县| 上林县| 乌鲁木齐市| 嘉祥县| 蛟河市| 昌都县| 黄大仙区| 双辽市| 洛阳市| 大同市| 垣曲县| 登封市| 碌曲县| 调兵山市| 南陵县| 苏尼特右旗| 霞浦县| 康定县|