iT邦幫忙

2022 iThome 鐵人賽

DAY 25
0
Software Development

初學軟體開發系列 第 25

Day25-介面的連結-路由管理

  • 分享至 

  • xImage
  •  

今日所學
路由管理

前提概要
在我們做的介面,都是一面式的,所以我們需要透過學習路由管理,一個按鈕點進去,就到下一個介面,或是返回鍵,可以回到上一頁。

首先,我先嘗試進去下一個介面,再回到上一頁。
使用Navigator透過Push()切到下一頁和Pop()返回上一頁來操作路由,所以我要寫兩個組件來切換。
程式碼:

import 'package:flutter/material.dart';

import 'demo2.dart';

class test1 extends StatelessWidget {
  const test1({super.key});

  @override
  Widget build(BuildContext context) {
    return Center(
      child: Column(
        children: [
          ElevatedButton(
            onPressed: (){
              Navigator.push(
                context,
                MaterialPageRoute(
                  builder: (context) => test2(),
                ),
              );
            },
            child: const Text("下一頁"),
          ),
        ],
      ),
    );
  }
}
import 'package:flutter/material.dart';

class test2 extends StatelessWidget {
  const test2({super.key});

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar:AppBar(
        title:const Text('首頁'),
      ),
      body:Center(
        child: Column(
          children: [
            const Text(
              "哈囉",
              style: TextStyle(fontSize: 80),
            ),
            OutlinedButton(
              onPressed : (){
                Navigator.pop(context);
              },
              child:const Text('上一頁'),
            ),
          ],
        ),
      ),
    );
  }
}

說明:路由的地方都是寫在按鈕裡,所以重點都在onPressed裡,我先用Navigator.push,在使用者按這個按鈕的時候,就會進入下一頁,在裡面的MaterialPageRoute,是一個在路由運行的時候,可以導入數值,那這邊我導入了下一個介面test2。
利用昨天學的按鈕文件,test2我用OutlinedButton虛線按鈕來設計,Navigator.pop倒回上一頁。

前面有說到MaterialPageRoute可以導入數值,那我就來操作一下。
我們要先假設一個變數,final String? text11;
const test2({Key? key, this.text11}) :super(key:key);
把變數加在哈囉的後面->

Text(
              "哈囉 $text11",
              style: TextStyle(fontSize: 80),
            ),

並且在demo1的地方導入

MaterialPageRoute(
                  builder: (context) => test2(text11:"happy"),
                ),

https://ithelp.ithome.com.tw/upload/images/20220925/201519182qezj0Im27.png

今日總結
今天學習路由的方法,讓我更有切換視窗的感覺~


上一篇
Day24-圖標、按鈕
下一篇
Day26-樣式+手勢
系列文
初學軟體開發31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言