Я хочу передать данные на страницу корзины, но экран пустой, он ничего не показывает

#flutter #dart

#flutter #dart

Вопрос:

Я создал список флажков и хочу, чтобы выбранный / отмеченный элемент был передан на страницу корзины, где вы сможете увидеть, что вы выбрали. когда я нажимаю значок корзины, чтобы просмотреть выбранные элементы, я просто получаю пустой экран.

Ваш вклад будет высоко оценен.

Основной виджет

 import 'package:cart_app/Basket.dart';
import 'package:flutter/material.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      debugShowCheckedModeBanner: false,
      title: 'Flutter Demo',
      theme: ThemeData(),
      home: MyHomePage(),
      routes: {
        Basket.routeName: (context) => Basket(),
      },
    );
  }
}
 

Страница списка продуктов

 class MyHomePage extends StatefulWidget {
  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  Map<String, bool> values = {
    "GIN COCKTAILS nClover Club t  R65": false,
    "Beers amp; Ciders nHeineken NRB t R29": false,
    "Vodka nCiroc t R35": false,
    "Vodka nCruz Vodka t R30": false,
    "COGNAC nHennesy t R40": false,
    "Tequilla nEl Jimador t R30": false,
    "Non-Alcoholic nSoft-Drink t R20": false,
    "WHISK[E]Y nJohnie Walker Red t R25": false,
  };

  var toggle = false;

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text("The Wing Republic"),
        actions: <Widget>[
          IconButton(
            icon: Icon(Icons.shopping_basket),
            onPressed: () {
              Navigator.of(context)
                  .pushNamed(Basket.routeName, arguments: values);
            },
          ),
        ],
      ),
      body: ListView(
        children: values.keys.map((String key) {
          return CheckboxListTile(
            title: Text(key),
            subtitle: Text(""),
            isThreeLine: false,
            value: values[key],
            onChanged: (bool value) {
              setState(() {
                values[key] = value;
              });
            },
          );
        }).toList(),
      ),
    );
  }
}
 

Страница корзины. Это страница, на которой я хочу удалить данные со страницы списка продуктов

 import 'package:flutter/material.dart';

class Basket extends StatelessWidget {
  static const routeName = '/Basket';

  @override
  Widget build(BuildContext context) {
    final data = ModalRoute.of(context).settings.arguments as Map<String, bool>;
    return Scaffold();
  }
}
 

Ответ №1:

Scaffold() в вашем классе Basket пуст. Это приведет к черному или «пустому» экрану. Добавьте несколько виджетов для отображения значений, переданных виджету корзины:

 Scaffold(
   body: Container (
      child: Column(
         children: Widgets[
            // Text Widgets with the passed values
            Text(data["key"]),
             Text(data["key"])
         ]
      )
   )
)
 

Комментарии:

1. Я новичок в flutter, поэтому мне было интересно, какие виджеты я должен использовать для отображения выбранных элементов из списка на странице корзины?

2. Я обновил свой ответ. Я бы предложил начать с базового текстового виджета. Документация Flutter также чрезвычайно полезна при поиске виджетов для отображения информации.