美文网首页
Flutter-13-导航参数的传递和接收

Flutter-13-导航参数的传递和接收

作者: 忆往昔Code | 来源:发表于2019-05-24 13:38 被阅读0次

    声明数据结构类

    Dart中可以使用类来抽象一个数据,比如我们模仿一个商品信息,有商品标题和商品描述。我们定义了一个Product类,里边有两个字符型变量,title和description。

    title:是商品标题。
    description: 商品详情描述

    class Product{
    final String title; //商品标题
    final String description; //商品描述
    Product(this.title,this.description);
    }

    构建一个商品列表:
    void main(){
    runApp(MaterialApp(
    title:'数据传递案例',
    home:ProductList(
    products:List.generate(
    20,
    (i)=>Product('商品 i','这是一个商品详情,编号为:i')
    ),
    )
    ));
    }

    ProductList自定义组件的代码:

    class ProductList extends StatelessWidget{
    final List<Product> products;
    ProductList({Key key,@required this.products}):super(key:key);
    @override
    Widget build(BuildContext context) {
    return Scaffold(
    appBar: AppBar(title:Text('商品列表')),
    body:ListView.builder(
    itemCount:products.length,
    itemBuilder: (context,index){
    return ListTile(
    title:Text(products[index].title),
    onTap:(){
    }
    );
    },
    )
    );
    }
    }

    全部代码:
    import 'package:flutter/material.dart';

    //传递的数据结构,也可以理解为对商品数据的抽象
    class Product{
    final String title; //商品标题
    final String description; //商品描述
    Product(this.title,this.description);
    }

    void main(){
    runApp(MaterialApp(
    title:'数据传递案例',
    home:ProductList(
    products:List.generate(
    20,
    (i)=>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) {
    return Scaffold(
    appBar: AppBar(title:Text('商品列表')),
    body:ListView.builder(
    itemCount:products.length,
    itemBuilder: (context,index){
    return ListTile(
    title:Text(products[index].title),
    onTap:(){
    Navigator.push(
    context,
    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) {
    return new Scaffold(
    appBar: AppBar(
    title:Text('{product.title}'), ), body:Center(child: Text('{product.description}'),)
    );
    }
    }

    相关文章

      网友评论

          本文标题:Flutter-13-导航参数的传递和接收

          本文链接:https://www.haomeiwen.com/subject/xqdgzqtx.html