Flutter 在颤振中构建函数后,如何将单个数据变量放入另一个页面?
在构建一个显示所有数据变量的函数后,如何将单个数据变量放入另一个页面 这是对函数的调用,稍后我将使用php从数据库中查询它们的列表Flutter 在颤振中构建函数后,如何将单个数据变量放入另一个页面?,flutter,dart,Flutter,Dart,在构建一个显示所有数据变量的函数后,如何将单个数据变量放入另一个页面 这是对函数的调用,稍后我将使用php从数据库中查询它们的列表 buildOrderItem('images/shoe.jpg', "Men's Italian Shoe", 150.00), buildOrderItem('images/suit.jpg', 'FloTextile Suit', 450.00), buildOrderItem('images/heels.
buildOrderItem('images/shoe.jpg', "Men's Italian Shoe", 150.00),
buildOrderItem('images/suit.jpg', 'FloTextile Suit', 450.00),
buildOrderItem('images/heels.jpg', "Women's Heel", 200.00),
这就是函数
Container buildOrderItem(imagelink, productName, price) {
return Container(
child: InkWell(
onTap: () {
Navigator.push(
context,
new MaterialPageRoute(
builder: (context) => new ProductPage()));
},
child: Container(
margin: EdgeInsets.only(left: 20, right: 20, top: 10, bottom: 10),
decoration: BoxDecoration(
color: Colors.white, borderRadius: BorderRadius.circular(10)),
child: Column(
children: [
Container(
child: Image.asset(
imagelink,
width: 250,
height: 150,
fit: BoxFit.scaleDown,
),
),
Container(
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Container(
padding: EdgeInsets.all(20),
child: Text(
productName,
style: TextStyle(fontWeight: FontWeight.bold),
),
),
Container(
padding: EdgeInsets.all(20),
child: Text(
'N' + price.toString(),
style: TextStyle(
fontWeight: FontWeight.bold,
color: Colors.deepOrange),
),
)
],
),
),
],
),
),
),
);
在ontap中,如何将特定产品中的数据变量(imagelink、productName、price)
传递到下一个屏幕中
onTap:(){
Navigator.push(
context,
new MaterialPageRoute(
builder: (context) => new ProductPage()));
},
我尝试将变量作为参数发送到路由中,但收到的却是null
请提供帮助,谢谢只需为您的
产品页面
创建构造函数并将变量传递到那里
class ProductPage extends StatelessWidget { /* Or StatefulWidget and then in the State use these variable like widget.someVariable*/
ProductPage({
required this.someVariable,
required this.someVariable2,
required this.someVariable3,
Key? key,
}) : super(key: key);
final String someVariable;
final String someVariable2;
final double someVariable3;
//...
}
要传递这些变量,请执行以下操作:
//...
ProductPage(
someVariable: 'Some value',
someVariable2: 'Some value',
someVariable3: 101.12,
)
//...
您还应该创建一个类Product
,该类将包含这些变量(最好使用final关键字),然后传递该类
如果你想让你的产品在几页之内,你应该使用或打包(它实际上使用的是InheritedWidget,它更简单、更方便)
然后在这一部分做这个
Widget buildOrderItem(imagelink, productName, price, Function ontap) {
return Container(
child: InkWell(
onTap: ontap,
child: Container(
margin: EdgeInsets.only(left: 20, right: 20, top: 10, bottom: 10),
decoration: BoxDecoration(
color: Colors.white, borderRadius: BorderRadius.circular(10)),
child: Column(
children: [
Container(
child: Image.asset(
imagelink,
width: 250,
height: 150,
fit: BoxFit.scaleDown,
),
),
Container(
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Container(
padding: EdgeInsets.all(20),
child: Text(
productName,
style: TextStyle(fontWeight: FontWeight.bold),
),
),
Container(
padding: EdgeInsets.all(20),
child: Text(
'N' + price.toString(),
style: TextStyle(
fontWeight: FontWeight.bold,
color: Colors.deepOrange),
),
)
],
),
),
],
),
),
),
);
}
我该怎么做?谢谢我对这个有点陌生。。。最近开始。@MirabeeClifonia,更新了回答我在这个```产品页面上有一些错误({需要this.someVariable,需要this.someVariable2,需要this.someVariable3,Key?Key,}):super(Key:Key)```另外,当我使用
widget.someVariable调用时,它发送null代码>此buildOrderItem('images/shoe.jpg',“Men's Italian shoe”,150.00,(){Navigator.push(上下文,new MaterialPageRoute(builder:(context)=>new ProductPage(imagelink,productName,price));)的错误,
您得到的确切错误是什么测试后编辑了我的答案,在我这方面没有错误。当前的答案将帮助您解决问题哦,很好,它正在工作,但如何从第二页调用它。。。我还想用imagelink、productName、price、Navigator.push(上下文、new MaterialPageRoute(builder:(context)=>ProductPage('assets/images/Research.png','mans's Heel',200.00),)发送它, ); }, ), 然后在productpage上生成构造函数
Widget buildOrderItem(imagelink, productName, price, Function ontap) {
return Container(
child: InkWell(
onTap: ontap,
child: Container(
margin: EdgeInsets.only(left: 20, right: 20, top: 10, bottom: 10),
decoration: BoxDecoration(
color: Colors.white, borderRadius: BorderRadius.circular(10)),
child: Column(
children: [
Container(
child: Image.asset(
imagelink,
width: 250,
height: 150,
fit: BoxFit.scaleDown,
),
),
Container(
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Container(
padding: EdgeInsets.all(20),
child: Text(
productName,
style: TextStyle(fontWeight: FontWeight.bold),
),
),
Container(
padding: EdgeInsets.all(20),
child: Text(
'N' + price.toString(),
style: TextStyle(
fontWeight: FontWeight.bold,
color: Colors.deepOrange),
),
)
],
),
),
],
),
),
),
);
}