Flutter教程-行星之路由/導航(5)

歡迎關注『郝先生談技術』頭條號,您的關注,是對作者最大的鼓勵,也是作者創作的動力

Flutter教程-行星之路由/導航(5)

在上篇文章 中,我們實現了行星列表。這篇文章將實現頁面間跳轉。點擊每個列表項,跳轉到詳情頁,點擊返回按鈕,跳轉到列表頁。加黑字體代表新增代碼。

運行效果

Flutter教程-行星之路由/導航(5)

路由和導航(Routing and navigation)

在Flutter中,我們將應用中的每個頁面都稱作一個路由,導航器(Navigator)負責頁面間跳轉。類似於iOS及Android的導航控制器,導航棧(Navigation Stack)管理著一組路由,push為入棧,pop為出棧。

創建詳情頁面

① 創建DetailPage.dart

② 導入Planet.dart


import 'package:demo/Planet.dart';


③ 添加數據源、構造函數


class DetailPage extends StatelessWidget {

final Planet planet;

DetailPage(this.planet);

}


④ 使用腳手架(Scaffold Widget)創建頁面,顯示planet.name和planet.image


class DetailPage extends StatelessWidget {

final Planet planet;

DetailPage(this.planet);

@override

Widget build(BuildContext context) {

return new Scaffold(

appBar: new AppBar(

title: new Text("詳情頁"),

),

body: new Container(

constraints: new BoxConstraints.expand(),

child: new Column(

mainAxisAlignment: MainAxisAlignment.center,

children: [

new Text(planet.name), // 顯示名稱

new Image.asset(

planet.image, // 顯示圖片

width: 96.0,

height: 96.0,

)],),));

}}


跳轉到詳情頁

① 打開PlanetRow.dart

② 在build()函數中,添加事件部件(GestureDetector),並添加點擊事件


return new GestureDetector(

onTap: _pushToDetail(context, planet),

child: new Container(

height: 120.0,

margin: const EdgeInsets.symmetric(

vertical: 16.0,

horizontal: 24.0,

),

child: new Stack(

children: [planetCard, planetThumbnail],

),),

);


運行

完成後點擊Hot reload,iPhone8模擬器效果如下:

Flutter教程-行星之路由/導航(5)

項目地址

[email protected]:hao2008/flutter-demo.git

下篇預告

行星之Hero動畫


分享到:


相關文章: