代码:
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)
}