前面提到過,在 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
在 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'),
),
),
);
}
}
複製代碼
看看效果:
Navigator 支持經過頁面名稱跳轉到指定頁面。
固然,你須要先註冊頁面,在 MaterialApp 的 routes 中。
MaterialApp(
// 設置第一個頁面,即啓動頁
initialRoute: '/',
routes: {
// 註冊一個頁面
'/': (context) => FirstScreen(),
// 註冊第二個頁面
'/second': (context) => SecondScreen(),
},
);
複製代碼
如今,你能夠經過剛剛註冊的頁面名稱來跳轉一個頁面,就像這樣:
Navigator.pushNamed(context, '/second');複製代碼