flutter - 当卡片被点击时,如何使 beer_ciders 类中的文本出现在订单类中
问题描述
我希望每张被点击的卡片都将其文本/数据传递给订单类,并通过直接转到订单类来访问该数据/文本(点击应用栏上的篮子图标)。请帮助我,我是编程新手
beers_ciders 类
import 'package:flutter/material.dart';
import 'package:menu/Orders.dart';
class beer_ciders extends StatefulWidget {
@override
_beer_cidersState createState() => _beer_cidersState();
}
class _beer_cidersState extends State<beer_ciders> {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: new Text("BEER & CIDERS"),
backgroundColor: Colors.redAccent[100],
actions: <Widget>[
IconButton(
icon: Icon(Icons.shopping_basket),
onPressed: () {
Navigator.of(context)
.push(MaterialPageRoute(builder: (context) => Orders()));
},
),
]),
backgroundColor: Colors.white,
body: Container(
decoration: BoxDecoration(
image: DecorationImage(
image: AssetImage("lib/images/twr.png"), fit: BoxFit.cover)),
child: Center(
child: SingleChildScrollView(
child: Center(
child: Column(
mainAxisSize: MainAxisSize.min,
children: <Widget>[
Card(
color: Colors.redAccent[100],
shape: RoundedRectangleBorder(
borderRadius: new BorderRadius.circular(18.0),
side: BorderSide(color: const Color(0xFFFFFFF))),
elevation: 20,
child: Padding(
padding: const EdgeInsets.symmetric(
vertical: 10, horizontal: 8),
child: Text("Amstel R29",
style: TextStyle(
fontSize: 15,
fontWeight: FontWeight.bold,
color: Colors.white))),
),
Container(
child: GestureDetector(
onTap: () {
setState(() {});
},
child: Card(
color: Colors.redAccent[100],
shape: RoundedRectangleBorder(
borderRadius: new BorderRadius.circular(18.0),
side: BorderSide(color: const Color(0xFFFFFFF))),
elevation: 20,
child: Padding(
padding: const EdgeInsets.symmetric(
vertical: 10, horizontal: 8),
child: Text("Belgravia Pre mix 29",
style: TextStyle(
fontSize: 15,
fontWeight: FontWeight.bold,
color: Colors.white)),
),
),
),
),
Container(
child: GestureDetector(
onTap: () {
setState(() {});
},
child: Card(
color: Colors.redAccent[100],
shape: RoundedRectangleBorder(
borderRadius: new BorderRadius.circular(18.0),
side: BorderSide(color: const Color(0xFFFFFFF))),
elevation: 20,
child: Padding(
padding: const EdgeInsets.symmetric(
vertical: 10, horizontal: 8),
child: Text("Belgravia R27 ",
style: TextStyle(
fontSize: 15,
fontWeight: FontWeight.bold,
color: Colors.white)),
)),
),
),
],
),
),
)),
),
);
}
}
订单类
import 'package:flutter/material.dart';
class Orders extends StatefulWidget {
@override
_OrdersState createState() => _OrdersState();
}
class _OrdersState extends State<Orders> {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: new Text("ORDERS"), backgroundColor: Colors.redAccent[100]),
backgroundColor: Colors.white,
body: Container(
decoration: BoxDecoration(
image: DecorationImage(
image: AssetImage("lib/images/twr.png"),
fit: BoxFit.cover)),
child: Center(
child: SingleChildScrollView(
child: Column(
mainAxisSize: MainAxisSize.min,
children: <Widget>[
Container(
child: Card(
color: Colors.redAccent[100],
shape: RoundedRectangleBorder(
borderRadius: new BorderRadius.circular(18.0),
side: BorderSide(color: const Color(0xFFFFFFF))),
elevation: 20,
child: Padding(
padding: const EdgeInsets.symmetric(
vertical: 10, horizontal: 8),
child: Text("",
style: TextStyle(
fontSize: 15,
fontWeight: FontWeight.bold,
color: Colors.white))),
),
),
])))));
}
}
包含转到订单类的篮子图标的饮料类的类型
import 'package:flutter/material.dart';
import 'package:menu/Gin_Cocktails.dart';
import 'package:menu/Orders.dart';
import 'package:menu/beer_ciders.dart';
import 'package:menu/cognac_brandy_cocktails.dart';
import 'package:menu/mcc.dart';
import 'package:menu/red_wine.dart';
import 'package:menu/rum_cocktails.dart';
import 'package:menu/shooters.dart';
import 'package:menu/tequilla.dart';
import 'package:menu/vodka.dart';
import 'package:menu/whiskey_cocktails.dart';
import 'package:menu/white_wine.dart';
class type_of_drink extends StatefulWidget {
@override
_type_of_drinkState createState() => _type_of_drinkState();
}
class _type_of_drinkState extends State<type_of_drink> {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: new Text("BEVERAGES"),
backgroundColor: Colors.redAccent[100],
actions: <Widget>[
IconButton(
icon: Icon(Icons.shopping_basket),
onPressed: () {
Navigator.of(context)
.push(MaterialPageRoute(builder: (context) => Orders()));
},
),
]),
backgroundColor: Colors.white,
body: Container(
decoration: BoxDecoration(
image: DecorationImage(
image: AssetImage("lib/images/twr.png"), fit: BoxFit.cover)),
child: SingleChildScrollView(
child: Align(
alignment: Alignment.center,
child: Column(mainAxisSize: MainAxisSize.min, children: <Widget>[
Container(
height: 55,
width: 350,
child: GestureDetector(
onTap: () {
Navigator.of(context).push(
MaterialPageRoute(
builder: (context) => Gin_Cocktails()),
);
},
child: Card(
color: Colors.redAccent[100],
shape: RoundedRectangleBorder(
borderRadius: new BorderRadius.circular(18.0),
side: BorderSide(color: const Color(0xFFFFFFF))),
elevation: 20,
child: Padding(
padding: const EdgeInsets.symmetric(
vertical: 10, horizontal: 8),
child: Center(
child: Text("GIN COCKTAILS",
style: TextStyle(
fontSize: 15,
fontWeight: FontWeight.bold,
color: Colors.white)),
),
),
),
),
),
Container(
height: 55,
width: 350,
child: GestureDetector(
onTap: () {
Navigator.of(context).push(
MaterialPageRoute(
builder: (context) => whiskey_cocktails()),
);
},
child: Card(
color: Colors.redAccent[100],
shape: RoundedRectangleBorder(
borderRadius: new BorderRadius.circular(18.0),
side: BorderSide(color: const Color(0xFFFFFFF))),
elevation: 20,
child: Padding(
padding: const EdgeInsets.symmetric(
vertical: 10, horizontal: 8),
child: Center(
child: Text("WHISK[E]Y COCKTAILS",
style: TextStyle(
fontSize: 15,
fontWeight: FontWeight.bold,
color: Colors.white)),
),
)),
),
),
Container(
height: 55,
width: 350,
child: GestureDetector(
onTap: () {
Navigator.of(context).push(
MaterialPageRoute(
builder: (context) => cognac_brandy_cocktails()),
);
},
child: Card(
color: Colors.redAccent[100],
shape: RoundedRectangleBorder(
borderRadius: new BorderRadius.circular(18.0),
side: BorderSide(color: const Color(0xFFFFFFF))),
elevation: 20,
child: Padding(
padding: const EdgeInsets.symmetric(
vertical: 10, horizontal: 8),
child: Center(
child: Text("COGNAG/BRANDY COCKTAILS",
style: TextStyle(
fontSize: 15,
fontWeight: FontWeight.bold,
color: Colors.white)),
),
)),
)),
Container(
height: 55,
width: 350,
child: GestureDetector(
onTap: () {
Navigator.of(context).push(
MaterialPageRoute(
builder: (context) => rum_cocktails()),
);
},
child: Card(
color: Colors.redAccent[100],
shape: RoundedRectangleBorder(
borderRadius: new BorderRadius.circular(18.0),
side: BorderSide(color: const Color(0xFFFFFFF))),
elevation: 20,
child: Padding(
padding: const EdgeInsets.symmetric(
vertical: 10, horizontal: 8),
child: Center(
child: Text("RUM COCKTAILS",
style: TextStyle(
fontSize: 15,
fontWeight: FontWeight.bold,
color: Colors.white)),
),
)),
),
),
Container(
height: 55,
width: 350,
child: GestureDetector(
onTap: () {
Navigator.of(context).push(
MaterialPageRoute(builder: (context) => shooters()),
);
},
child: Card(
color: Colors.redAccent[100],
shape: RoundedRectangleBorder(
borderRadius: new BorderRadius.circular(18.0),
side: BorderSide(color: const Color(0xFFFFFFF))),
elevation: 20,
child: Padding(
padding: const EdgeInsets.symmetric(
vertical: 10, horizontal: 8),
child: Center(
child: Text("SHOOTERS",
style: TextStyle(
fontSize: 15,
fontWeight: FontWeight.bold,
color: Colors.white)),
),
)),
),
),
Container(
height: 55,
width: 350,
child: GestureDetector(
onTap: () {
Navigator.of(context).push(
MaterialPageRoute(builder: (context) => beer_ciders()),
);
},
child: Card(
color: Colors.redAccent[100],
shape: RoundedRectangleBorder(
borderRadius: new BorderRadius.circular(18.0),
side: BorderSide(color: const Color(0xFFFFFFF))),
elevation: 20,
child: Padding(
padding: const EdgeInsets.symmetric(
vertical: 10, horizontal: 8),
child: Center(
child: Text("BEERS & CIDERS",
style: TextStyle(
fontSize: 15,
fontWeight: FontWeight.bold,
color: Colors.white)),
),
)),
),
),
Container(
height: 55,
width: 350,
child: GestureDetector(
onTap: () {
Navigator.of(context).push(
MaterialPageRoute(builder: (context) => vodka()),
);
},
child: Card(
color: Colors.redAccent[100],
shape: RoundedRectangleBorder(
borderRadius: new BorderRadius.circular(18.0),
side: BorderSide(color: const Color(0xFFFFFFF))),
elevation: 20,
child: Padding(
padding: const EdgeInsets.symmetric(
vertical: 10, horizontal: 8),
child: Center(
child: Text("VODKA",
style: TextStyle(
fontSize: 15,
fontWeight: FontWeight.bold,
color: Colors.white)),
),
)),
),
),
Container(
height: 55,
width: 350,
child: GestureDetector(
onTap: () {
Navigator.of(context).push(
MaterialPageRoute(builder: (context) => white_wine()),
);
},
child: Card(
color: Colors.redAccent[100],
shape: RoundedRectangleBorder(
borderRadius: new BorderRadius.circular(18.0),
side: BorderSide(color: const Color(0xFFFFFFF))),
elevation: 20,
child: Padding(
padding: const EdgeInsets.symmetric(
vertical: 10, horizontal: 8),
child: Center(
child: Text("WHITE WINE",
style: TextStyle(
fontSize: 15,
fontWeight: FontWeight.bold,
color: Colors.white)),
),
)),
),
),
Container(
height: 55,
width: 350,
child: GestureDetector(
onTap: () {
Navigator.of(context).push(
MaterialPageRoute(builder: (context) => red_wine()),
);
},
child: Card(
color: Colors.redAccent[100],
shape: RoundedRectangleBorder(
borderRadius: new BorderRadius.circular(18.0),
side: BorderSide(color: const Color(0xFFFFFFF))),
elevation: 20,
child: Padding(
padding: const EdgeInsets.symmetric(
vertical: 10, horizontal: 8),
child: Center(
child: Text("RED WINE",
style: TextStyle(
fontSize: 15,
fontWeight: FontWeight.bold,
color: Colors.white)),
),
)),
),
),
Container(
height: 55,
width: 350,
child: GestureDetector(
onTap: () {
Navigator.of(context).push(
MaterialPageRoute(builder: (context) => mcc()),
);
},
child: Card(
color: Colors.redAccent[100],
shape: RoundedRectangleBorder(
borderRadius: new BorderRadius.circular(18.0),
side: BorderSide(color: const Color(0xFFFFFFF))),
elevation: 20,
child: Padding(
padding: const EdgeInsets.symmetric(
vertical: 10, horizontal: 8),
child: Center(
child: Text("MCC",
style: TextStyle(
fontSize: 15,
fontWeight: FontWeight.bold,
color: Colors.white)),
),
)),
),
),
Container(
height: 55,
width: 350,
child: GestureDetector(
onTap: () {
Navigator.of(context).push(
MaterialPageRoute(builder: (context) => tequilla()),
);
},
child: Card(
color: Colors.redAccent[100],
shape: RoundedRectangleBorder(
borderRadius: new BorderRadius.circular(18.0),
side: BorderSide(color: const Color(0xFFFFFFF))),
elevation: 20,
child: Padding(
padding: const EdgeInsets.symmetric(
vertical: 10, horizontal: 8),
child: Center(
child: Text("TEQUILLA",
style: TextStyle(
fontSize: 15,
fontWeight: FontWeight.bold,
color: Colors.white)),
),
)),
),
),
]),
),
),
));
}
}
解决方案
您不能直接在您的应用程序的页面之间传递数据,或者至少,您不能以一种好的方式做到这一点。您应该在应用程序中使用订单表设置数据库。当您选择一个项目时,在表中插入一行包含所有需要的数据,然后在您的订单页面中从数据库中读取。
如果您想开始实施数据库检查这里
推荐阅读
- c++ - 在 C++ 中使用具有默认模板参数的模板类时出现“模板参数太少错误”
- android - 如何使用动态内容构建两个同步 ListView
- python - 在 Discord.py 中 - 重写 AttributeError:'Bot' 对象没有属性 'voice_client_in'
- c# - 移除系统窗口的焦点
- mongodb - Mongoose TypeError:无法读取 null 的属性“insertOne”
- reactjs - React Jest setInterval 测试覆盖率
- azure - 无法连接到 Azure 迁移服务中的源服务器
- julia - Python函数调用的参数是Julia中的保留字
- amazon-web-services - AWS ElastiCache (Redis) 的 Spring Data 原子增量
- dc.js - DC 热图如何为正值和负值指定 2 色图