首页 > 解决方案 > 当卡片被点击时,如何使 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)),
                          ),
                        )),
                  ),
                ),
              ]),
            ),
          ),
        ));
  }
}

标签: flutterdart

解决方案


您不能直接在您的应用程序的页面之间传递数据,或者至少,您不能以一种好的方式做到这一点。您应该在应用程序中使用订单表设置数据库。当您选择一个项目时,在表中插入一行包含所有需要的数据,然后在您的订单页面中从数据库中读取。

如果您想开始实施数据库检查这里

https://moor.simonbinder.eu/


推荐阅读