Android 放射自显影环中的颤振
我的RadioListile有问题它不工作 我正在尝试创建一个RadioListile列表,以使用for循环从firebase中填充我的数据。当我单击它时,它确实会收到操作,但单击它时我无法选中该框 我已经试着解决它好几天了。有人能帮忙吗 这是我的代码:Android 放射自显影环中的颤振,android,flutter,flutter-widget,Android,Flutter,Flutter Widget,我的RadioListile有问题它不工作 我正在尝试创建一个RadioListile列表,以使用for循环从firebase中填充我的数据。当我单击它时,它确实会收到操作,但单击它时我无法选中该框 我已经试着解决它好几天了。有人能帮忙吗 这是我的代码: import 'package:eatwell/src/helpers/changescreen.dart'; import 'package:eatwell/src/model/itemmodel.dart'; import 'package
import 'package:eatwell/src/helpers/changescreen.dart';
import 'package:eatwell/src/model/itemmodel.dart';
import 'package:eatwell/src/model/platemodel.dart';
import 'package:eatwell/src/pages/cartPage.dart';
import 'package:eatwell/src/provider/customplate.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> {
@override
Widget build(BuildContext context) {
final carbsProvider = Provider.of<CarbsProvider>(context);
var mycarb = 1;
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>[
ListTile(
title: Text("Choose Your Carbohydrates"),
),
for (var i = 0; i < carbsProvider.carbs.length; i++)
RadioListTile(
title: Text(carbsProvider.carbs[i].name),
value: i,
onChanged: (var v) {
print("object");
mycarb = v;
},
groupValue: mycarb,
)
],
),
// for (var i = 0; i < widget.custom.fooditems.length; i++)
// Text(
// widget.custom.fooditems[i],
// style: TextStyle(fontSize: 30.0, fontWeight: FontWeight.bold),
// )
],
),
));
}
}
导入“包:eatwell/src/helpers/changescreen.dart”;
导入“package:eatwell/src/model/itemmodel.dart”;
导入“package:eatwell/src/model/platemodel.dart”;
导入“package:eatwell/src/pages/cartPage.dart”;
导入“package:eatwell/src/provider/customplate.dart”;
导入“package:eatwell/src/provider/item.dart”;
进口“包装:颤振/材料.省道”;
导入“包:provider/provider.dart”;
类CustomDetail扩展了StatefulWidget{
最终定制模型定制;
const CustomDetail({Key-Key,this.custom}):super(Key:Key);
@凌驾
_CustomDetail createState()=>\u CustomDetail();
}
类_CustomDetail扩展状态{
@凌驾
小部件构建(构建上下文){
最终carbsProvider=提供者(上下文);
var-mycarb=1;
返回脚手架(
appBar:appBar(
标题:正文(
“预置餐”,
样式:TextStyle(
字体大小:30.0,
fontWeight:fontWeight.bold,
颜色:颜色,黑色,
fontFamily:“DancingScript”,
),
),
标题:对,
行动:[
填充物(
填充:仅限常量边集(底部:8.0,右侧:8.0),
子:堆栈(
儿童:[
图标按钮(
图标:图标(
图标。购物袋概述,
尺码:40,
),
已按下:(){
更改屏幕(上下文,购物车());
}),
定位(
右:3,,
底部:0,
子:容器(
装饰:盒子装饰(
颜色:颜色,白色,
边界半径:边界半径。圆形(10),
boxShadow:[
箱形阴影(
颜色:颜色。灰色,
偏移量:偏移量(2,3),
(半径:3)
]),
孩子:填充(
填充:仅限常量边集(左:4,右:4),
子:文本(
"2",
样式:TextStyle(
颜色:颜色,红色,
字体大小:16.0,
fontWeight:fontWeight.bold),
),
),
),
)
],
),
)
],
),
正文:安全区(
子:ListView(
儿童:[
填充物(
填充:仅限常量边设置(
左:20.0,右:20,下:10,上:30),
子:容器(
装饰:盒子装饰(
颜色:Colors.cyancent,
边界半径:边界半径。圆形(100),
),
身高:300,
对齐:对齐.center,
孩子:图像(
image:NetworkImage(widget.custom.image),
身高:300,
宽度:300,
),
),
),
正文(
widget.custom.name,
样式:TextStyle(fontSize:30.0,fontWeight:fontWeight.bold),
textAlign:textAlign.center,
),
正文(
($RM{widget.custom.price}”),
样式:TextStyle(fontSize:30.0,fontWeight:fontWeight.bold),
textAlign:textAlign.center,
),
对于(var i=0;ionChanged: (var v) {
setState((){
print("object");
mycarb = v;
});
},
根据文件:
调用setState会通知框架此对象的内部状态已发生更改,可能会影响此子树中的用户界面,从而导致框架为此状态对象安排生成
在RadioDistile小部件的onChanged方法中使用setState方法,正如Abdul Qadir所回答的那样。您的列表中是否填写了firestore数据,问题是在您单击列表时出现的?您是否有任何错误日志?我的RadioTile列表中充满了firestore的数据,但我不知道如何设置RadioTile列表的groupvalue,因为当我单击RadioTile列表数据的n项时,它将标记为selectedI solve它已经解决了,变量应该在构建内容之外声明,谢谢您的帮助我已经解决了它