тип ‘int’ не является подтипом типа ‘Список’ результата функции

#arrays #firebase #flutter #flutter-layout #flutter-test

# #массивы #firebase #флаттер #flutter-layout #флаттер-тест

Вопрос:

Я хочу создать radiotilelist для одного и того же элемента в течение двух раз, поэтому я подаю в суд на цикл для отображения radiotilelist, поэтому я различаю graoupvalue с помощью элемента list, однако возникает эта проблема, скажем, что тип ‘int’ не является подтипом типа ‘List’ из ‘результата функции’. Кто-нибудь может помочь мне решить эту проблему, страдает от этого в течение нескольких дней

 class CustomDetail extends StatefulWidget {
  final CustomModel custom;

  const CustomDetail({Key key, this.custom}) : super(key: key);

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

class _CustomDetail extends State<CustomDetail> {
  var mycarb;
  List myprotein;
  List protein;
  @override
  Widget build(BuildContext context) {
    final carbsProvider = Provider.of<CarbsProvider>(context);
    final proteinProvider = Provider.of<ProteinProvider>(context);

    return Scaffold(
       
              for (var i = 0; i < widget.custom.carbnum; i  )
                Column(
                  children: <Widget>[
                    for (var i = 0; i < widget.custom.carbnum; i  )
                      Container(
                        color: Colors.blue,
                        child: ListTile(
                          title: Text("Choose Your Carbohydrates"),
                        ),
                      ),
                    for (var i = 0; i < carbsProvider.carbs.length; i  )
                      RadioListTile(
                        title: Text(carbsProvider.carbs[i].name),
                        value: carbsProvider.carbs[i].name,
                        onChanged: (v) {
                          setState(() {
                            mycarb = v;
                            print(mycarb);
                          });
                        },
                        groupValue: mycarb,
                      ),
                    for (var i = 0; i < widget.custom.proteinnum; i  )
                      Column(
                        children: <Widget>[
                          Container(
                            color: Colors.blue,
                            child: ListTile(
                              title: Text("Choose Your Protein"),
                            ),
                          ),
                          for (var j = 0;
                              j < proteinProvider.protein.length;
                              j  )
                            RadioListTile(
                                title: Text(proteinProvider.protein[j].name),
                                value: j,
                                onChanged: (v) {
                                  setState(() {
                                    myprotein[i] = v;
                                    print(myprotein);
                                  });
                                  protein[i] = myprotein;
                                },
                                groupValue: myprotein[i])
                        ],
                      ),
                  ],
                ),
              Text(protein.toString())
 

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

1. Привет, вы можете опубликовать полный код. Некоторые части, похоже, отсутствуют.

Ответ №1:

Метод ‘[]’ был вызван при null. Получатель: null Пытался вызвать:

 import 'package:eatwell/src/helpers/changescreen.dart';
import 'package:eatwell/src/model/platemodel.dart';
import 'package:eatwell/src/pages/cartPage.dart';
import 'package:eatwell/src/provider/item.dart';
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';

class CustomDetail extends StatefulWidget {
  final CustomModel custom;

  const CustomDetail({Key key, this.custom}) : super(key: key);

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

class _CustomDetail extends State<CustomDetail> {
  var mycarb;
  List myprotein;
  List protein;
  @override
  Widget build(BuildContext context) {
    final carbsProvider = Provider.of<CarbsProvider>(context);
    final proteinProvider = Provider.of<ProteinProvider>(context);

    return Scaffold(
        appBar: AppBar(
          title: Text(
            "Preset Meal",
            style: TextStyle(
              fontSize: 30.0,
              fontWeight: FontWeight.bold,
              color: Colors.black,
              fontFamily: 'DancingScript',
            ),
          ),
          centerTitle: true,
          actions: <Widget>[
            Padding(
              padding: const EdgeInsets.only(bottom: 8.0, right: 8.0),
              child: Stack(
                children: <Widget>[
                  IconButton(
                      icon: Icon(
                        Icons.shopping_bag_outlined,
                        size: 40,
                      ),
                      onPressed: () {
                        changeScreen(context, Cart());
                      }),
                  Positioned(
                    right: 3,
                    bottom: 0,
                    child: Container(
                      decoration: BoxDecoration(
                          color: Colors.white,
                          borderRadius: BorderRadius.circular(10),
                          boxShadow: [
                            BoxShadow(
                                color: Colors.grey,
                                offset: Offset(2, 3),
                                blurRadius: 3)
                          ]),
                      child: Padding(
                        padding: const EdgeInsets.only(left: 4, right: 4),
                        child: Text(
                          "2",
                          style: TextStyle(
                              color: Colors.red,
                              fontSize: 16.0,
                              fontWeight: FontWeight.bold),
                        ),
                      ),
                    ),
                  )
                ],
              ),
            )
          ],
        ),
        body: SafeArea(
          child: ListView(
            children: <Widget>[
              Padding(
                padding: const EdgeInsets.only(
                    left: 20.0, right: 20, bottom: 10, top: 30),
                child: Container(
                  decoration: BoxDecoration(
                    color: Colors.cyanAccent,
                    borderRadius: BorderRadius.circular(100),
                  ),
                  height: 300,
                  alignment: Alignment.center,
                  child: Image(
                    image: NetworkImage(widget.custom.image),
                    height: 300,
                    width: 300,
                  ),
                ),
              ),
              Text(
                widget.custom.name,
                style: TextStyle(fontSize: 30.0, fontWeight: FontWeight.bold),
                textAlign: TextAlign.center,
              ),
              Text(
                ("RM ${widget.custom.price}"),
                style: TextStyle(fontSize: 30.0, fontWeight: FontWeight.bold),
                textAlign: TextAlign.center,
              ),
              for (var i = 0; i < widget.custom.carbnum; i  )
                Column(
                  children: <Widget>[
                    for (var i = 0; i < widget.custom.carbnum; i  )
                      Container(
                        color: Colors.blue,
                        child: ListTile(
                          title: Text("Choose Your Carbohydrates"),
                        ),
                      ),
                    for (var i = 0; i < carbsProvider.carbs.length; i  )
                      RadioListTile(
                        title: Text(carbsProvider.carbs[i].name),
                        value: carbsProvider.carbs[i].name,
                        onChanged: (v) {
                          setState(() {
                            mycarb = v;
                            print(mycarb);
                          });
                        },
                        groupValue: mycarb,
                      ),
                    for (var i = 0; i < widget.custom.proteinnum; i  )
                      Column(
                        children: <Widget>[
                          Container(
                            color: Colors.blue,
                            child: ListTile(
                              title: Text("Choose Your Protein"),
                            ),
                          ),
                          for (var j = 0;
                              j < proteinProvider.protein.length;
                              j  )
                            RadioListTile(
                                title: Text(proteinProvider.protein[j].name),
                                value: proteinProvider.protein[j].name,
                                onChanged: (v) {
                                  setState(() {
                                    myprotein[i] = v;
                                    print(myprotein[i]);
                                  });
                                  protein[i] = myprotein;
                                },
                                groupValue: myprotein[i])
                        ],
                      ),
                  ],
                ),
              Text(protein.toString())

              // for (var i = 0; i < widget.custom.fooditems.length; i  )
              //   Text(
              //     widget.custom.fooditems[i],
              //     style: TextStyle(fontSize: 30.0, fontWeight: FontWeight.bold),
              //   )
            ],
          ),
        ));
  }
}
 

Извините, ошибка заключается в этой ошибке, и это полный код