zoukankan      html  css  js  c++  java
  • 导航参数传递

    代码:

    import 'package:flutter/material.dart';

    class Product{
    final String title;//标题
    final String desciption;//描述
    Product(this.title,this.desciption);//构造函数
    }


    void main() {
    runApp(MaterialApp(
    title: 'xxxxx',
    home: ProductList(
    productLists:List.generate(20, (i)=>Product('商品 $i','这是一个商品详情,编号 $i')))
    ),
    );
    }
    class ProductList extends StatelessWidget {
    final List<Product> productLists;
    ProductList({Key key,@required this.productLists}):super(key:key);


    @override
    Widget build(BuildContext context) {
    return Scaffold(
    appBar: AppBar(title: Text('商品列表'),),
    body: ListView.builder(
    itemCount: productLists.length,
    itemBuilder: (context,index){
    return ListTile(
    title: Text(productLists[index].title),
    onTap: (){
    Navigator.push(context, MaterialPageRoute(
    builder: (context)=> ProductDetail(productDetail: productLists[index])
    ));
    },
    );
    },
    ),
    );
    }
    }

    class ProductDetail extends StatelessWidget {
    final Product productDetail;
    ProductDetail({Key key,@required this.productDetail}) : super(key: key);

    @override
    Widget build(BuildContext context) {
    return Scaffold(
    appBar: AppBar( title: Text('${productDetail.title}')),
    body: Center(
    child: Text('${productDetail.desciption}')
    )
    );
    }
    }
     
    总结:

    //导航传参

    //创建一个类—下一级的类

    class xxx extends StatelessWidget {

    final 模型1 模型对象1

    创建的类要接受的参数

    xxx({Key key @required this.模型对象1}):super(key : key);

     

     

     

    }

    // 创建模型

    class 模型1 {

    final string 属性1

    final string 属性2

    模型1(this.属性1,this.属性2)构造函数

    }

     

     

     

    //创建上一级的类——要压栈的类

    class yyy extends statelessWidget{

    final List<模型1> 模型对象2

    yyy{{Key key @required this.模型对象2}}:super(key:key)

     

    }

     

    //此处很微妙 模型对象1 是要传入下级页面生产的模型 ,模型对象2是当前页面要传入的数据模型

    Navigator.push(context,MateriaPageRoute){

        builder:(context)=>xxx(模型对象1:模型对象2)

    }

  • 相关阅读:
    编译原理 First集和Follow集的求法
    编译原理——算符优先分析法详解
    api.js(接口文件)
    addmul.wxs(保留两位小数-将手机号中间4位数变成*-处理时间戳)
    插槽的使用
    scroll-view小程序侧边栏(点击加载右侧商品)
    Array.of
    es6解构赋值默认值结合使用
    ES6 允许为函数的参数设置默认值,即直接写在参数定义的后面。
    es6 数组的新方法 some filter indexOf 展开运算符... let const
  • 原文地址:https://www.cnblogs.com/pp-pping/p/12166637.html
Copyright © 2011-2022 走看看