#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),
// )
],
),
));
}
}
Извините, ошибка заключается в этой ошибке, и это полный код