Saya ingin dapat mentransfer data dari satu layar ke layar lainnya. Apa yang saya miliki sekarang berfungsi, tetapi saya ingin memiliki ikon di AppBar yang hanya akan membuka halaman kedua, dan tidak mengambil argumen apa pun. Untuk saat ini saya punya ini:

HALAMAN PERTAMA

Ini adalah ikon pada halaman pertama yang menambahkan argumen ubin daftar ke layar Keranjang (dan hanya menambahkan , itu tidak mendorong layar Keranjang, yang harus dilakukan di bawah ini di bilah aplikasi.

child: IconButton(
                        icon: Icon(Icons.add),
                       
                        onPressed: () => MaterialPageRoute(
                              
                              builder: (context) =>
                                  Cart(person.name, person.surname),
                            )),

Di bawah perancah saya memiliki ini di AppBar, ikon yang seharusnya hanya mendorong layar Keranjang, dan bukan nilai lainnya.

IconButton(
            icon: Icon(Icons.add_shopping_cart, color: Colors.white),
            //this will be the cart window ontap, change icon to something better
            onPressed: () => Navigator.push(
                context,
                MaterialPageRoute(
                    builder: (BuildContext context) =>
                        Cart(//there should be arguments here, but I just want to go to Cart screen, the arguments were added in the first icon))),

Kelas Keranjang ini membutuhkan argumen (dari halaman kedua, seperti personName, personSurname), tetapi saya hanya ingin dapat mendorong layar kedua, dan tidak memiliki argumen di sana. Ini adalah ikon keranjang kecil di bilah aplikasi.

HALAMAN KEDUA

Ini adalah halaman kedua (sudo cart screen) yang seharusnya hanya menerima argumen dari yang pertama.

 class Cart extends StatefulWidget {
  
  final String personName;
  final String personSurname;
  Cart(this.personName, this.personSurname);

  @override
  _CartState createState() => _CartState();
}

class _CartState extends State<Cart> {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Cart'),
        centerTitle: true,
      ),
      body: Center(
          child: Container(
              child: Text('${widget.personName}, ${widget.personSurname}'))),
    );
  }
}

Masalah saya adalah saya ingin memiliki 2 fungsi terpisah untuk troli. Yang pertama ada di halaman pertama di mana ikon pertama hanya menambahkan argumen apa pun yang saya inginkan ke troli, dan ikon kedua di bilah aplikasi di halaman pertama hanya mendorong layar Cart.

Di layar kedua, saya hanya ingin data apa pun didorong dari halaman pertama.

1
arbiter 20 November 2020, 14:10

1 menjawab

Jawaban Terbaik

Cobalah seperti ini:

  1. Nyatakan dua variabel di atas:
String name = '';
String surname = '';
  1. Tetapkan data Anda kepada mereka:
child: IconButton(
         icon: Icon(Icons.add),
         onPressed: () {
           name = person.name;
           surname = person.surname;
         },
  1. Dan gunakan sebagai argumen:
IconButton(
    icon: Icon(Icons.add_shopping_cart, color: Colors.white),
    onPressed: () => Navigator.push(
                context,
                MaterialPageRoute(
                    builder: (BuildContext context) =>  Cart(name, surname))
                ),
1
intraector 20 November 2020, 12:09