Advertisement

Flutter 页面跳转示例

阅读量:
复制代码
 #页面跳转发送数据

    
 import 'package:flutter/material.dart';
    
 void main(){
    
   runApp(MyApp());
    
 }
    
 class Product{
    
   final String title;
    
   final String description;
    
  
    
   Product(this.title, this.description);
    
 }
    
 class MyApp extends StatelessWidget{
    
   @override
    
   Widget build(BuildContext context) {
    
     // TODO: implement build
    
     return MaterialApp(
    
       title: "数据传递示例",
    
       home: new ProductList(
    
     products: new List.generate(
    
       20,
    
         (i) => new Product('商品$i', "这是一个商品详情$i")
    
     )
    
       )
    
     );
    
   }
    
 }
    
 class ProductList extends StatelessWidget{
    
   final List<Product> products;
    
   ProductList({Key key, @required this.products}): super(key:key);
    
  
    
   @override
    
   Widget build(BuildContext context) {
    
     // TODO: implement build
    
     return Scaffold(
    
       appBar: new AppBar(
    
     title: new Text("商品列表"),
    
       ),
    
       body: new ListView.builder(
    
       itemCount: products.length,
    
       itemBuilder: (context, index){
    
         return new ListTile(
    
           title: new Text(products[index].title),
    
           onTap: (){
    
             Navigator.push(context,
    
                 new MaterialPageRoute(
    
                 builder: (context) =>
    
                   new ProductDetail(product:products[index])
    
                 )
    
             );
    
           },
    
         );
    
       }
    
       ),
    
     );
    
   }
    
 }
    
 class ProductDetail extends StatelessWidget{
    
   final Product product;
    
   ProductDetail({Key key, @required this.product}):super(key:key);
    
  
    
   @override
    
   Widget build(BuildContext context) {
    
     // TODO: implement build
    
     return Scaffold(
    
       appBar: AppBar(
    
     title: new Text("${product.title}"),
    
       ),
    
       body:new Padding(
    
     padding: new EdgeInsets.all(10),
    
     child: new Text("${product.description}"),
    
       )
    
     );
    
   }
    
 }
    
  
    
 #---------以此为界-------------
    
 #页面跳转返回数据
    
 import 'package:flutter/material.dart';
    
  
    
 class AddFriendView extends StatelessWidget{
    
   @override
    
   Widget build(BuildContext context) {
    
     // TODO: implement build
    
     return Scaffold(
    
       appBar: new AppBar(
    
     title: Text("跳转页面返回数据"),
    
       ),
    
       body: new Center(
    
     child: new RouteButton(),
    
       ),
    
     );
    
   }
    
 }
    
  
    
 class RouteButton extends StatelessWidget{
    
   @override
    
   Widget build(BuildContext context) {
    
     // TODO: implement build
    
     return new RaisedButton(
    
       onPressed: ((){
    
     _navigateToSecondPage(context);
    
       }),
    
       child: new Text("选择一个选项,任意选项"),
    
     );
    
   }
    
   _navigateToSecondPage(BuildContext context) async{
    
     final result = await Navigator.push(
    
     context,
    
     new MaterialPageRoute(builder: (context) => new SecondPage())
    
     );
    
     Scaffold.of(context).showSnackBar(new SnackBar(content:new Text("$result")));
    
   }
    
 }
    
 class SecondPage extends StatelessWidget{
    
   @override
    
   Widget build(BuildContext context) {
    
     // TODO: implement build
    
     return Scaffold(
    
       appBar: AppBar(
    
     title: Text("选择一条数据"),
    
       ),
    
       body:new Center(
    
     child: Column(
    
       mainAxisAlignment: MainAxisAlignment.center,
    
       children: <Widget>[
    
         Padding(
    
           padding:const EdgeInsets.all(8.0),
    
           child: RaisedButton(
    
             onPressed:((){
    
               Navigator.pop(context, '老师您好');
    
             }),
    
             child: Text("老师您好"),
    
           ),
    
         ),
    
         Padding(
    
           padding:const EdgeInsets.all(8.0),
    
           child: RaisedButton(
    
             onPressed:((){
    
               Navigator.pop(context, "hi Flutter");
    
             }),
    
             child: Text("hi Flutter"),
    
           ),
    
         )
    
       ],
    
     ),
    
       )
    
     );
    
   }
    
 }
    
 #----------------------
    
 #页面跳转动画详解
    
 import 'package:flutter/material.dart';
    
  
    
 class AddFriendView extends StatelessWidget{
    
   @override
    
   Widget build(BuildContext context) {
    
     // TODO: implement build
    
     return Scaffold(
    
       appBar: new AppBar(
    
     title: Text("跳转页面返回数据"),
    
       ),
    
       body: new Center(
    
     child: new RouteButton(),
    
       ),
    
     );
    
   }
    
 }
    
  
    
 class RouteButton extends StatelessWidget{
    
   @override
    
   Widget build(BuildContext context) {
    
     // TODO: implement build
    
     return GestureDetector(
    
       child: Container(
    
 //        tag: "第一张图片",
    
     child: Image.network(
    
         "https://ss1.bdstatic.com/70cFuXSh_Q1YnxGkpoWK1HF6hhy/it/u=3495002897,1124108098&fm=27&gp=0.jpg"
    
     ),
    
       ),
    
       onTap: (){
    
     Navigator.push(context, new MaterialPageRoute(builder: (_){
    
       return SecondPage();
    
     }));
    
       },
    
     );
    
   }
    
 }
    
 class SecondPage extends StatelessWidget{
    
   @override
    
   Widget build(BuildContext context) {
    
     // TODO: implement build
    
     return Scaffold(
    
       appBar: AppBar(
    
     title: Text("第二张图片"),
    
       ),
    
       body:new Center(
    
     child: GestureDetector(
    
       child: Container(
    
 //            tag: "第二张图片",
    
         child: Image.network(
    
             "https://ss3.bdstatic.com/70cFv8Sh_Q1YnxGkpoWK1HF6hhy/it/u=1036218379,1213399244&fm=27&gp=0.jpg"
    
         ),
    
       ),
    
       onTap: (){
    
         Navigator.pop(context);
    
       },
    
     )
    
  
    
       )
    
     );
    
   }
    
 }
    
 #---------以此为界-------------
    
 #动画处理调解
    
 import 'package:flutter/material.dart';
    
  
    
 class AddFriendView extends StatelessWidget{
    
   final appTitle = "Flutter 详细动画";
    
   @override
    
   Widget build(BuildContext context) {
    
     // TODO: implement build
    
     return Scaffold(
    
       body: MyHomePage(),
    
     );
    
   }
    
 }
    
 class MyHomePage extends StatefulWidget{
    
   @override
    
   _MyHomePageState createState() => new _MyHomePageState();
    
 }
    
 class _MyHomePageState extends State<MyHomePage>{
    
   bool _visible = true;
    
   @override
    
   Widget build(BuildContext context) {
    
     // TODO: implement build
    
     return Scaffold(
    
       appBar: new AppBar(
    
     title: Text("动画处理详解"),
    
       ),
    
       body: Center(
    
     child: AnimatedOpacity(
    
       opacity: _visible ? 1.0 : 0.0,
    
       duration: Duration(
    
           milliseconds: 500
    
       ),
    
       child: Container(
    
         width: 300.0,
    
         height: 300.0,
    
         color: Colors.deepPurple,
    
       ),
    
     ),
    
       ),
    
       floatingActionButton:new FloatingActionButton(
    
     onPressed: (){
    
       setState((){
    
         _visible = !_visible;
    
       });
    
     },
    
     tooltip: '显示隐藏',
    
     child: Icon(Icons.flip),
    
       )
    
     );
    
   }
    
  
    
 }

全部评论 (0)

还没有任何评论哟~