Flutter 飞空阵阵怎么办
颤振我通过数组中的forEach循环添加数据 代码Flutter 飞空阵阵怎么办,flutter,Flutter,颤振我通过数组中的forEach循环添加数据 代码 class\u BrowserCategoryPage2State扩展状态{ var items={'items':[]}; @凌驾 小部件构建(构建上下文){ 打印(“浏览子类别”); 打印(小部件子类别); widget.subCategory.forEach((子类别){ items['items'].addAll(子类别['items']); }); 印刷品(项目); 印刷品(“萨达”); 返回脚手架( appBar:buildAppB
class\u BrowserCategoryPage2State扩展状态{
var items={'items':[]};
@凌驾
小部件构建(构建上下文){
打印(“浏览子类别”);
打印(小部件子类别);
widget.subCategory.forEach((子类别){
items['items'].addAll(子类别['items']);
});
印刷品(项目);
印刷品(“萨达”);
返回脚手架(
appBar:buildAppBar(),
主体:容器(
子:SingleChildScrollView(
子:列(
crossAxisAlignment:crossAxisAlignment.start,
儿童:[
buildCategoryHeading(上下文),
GridView.builder(
itemCount:widget.subCategory.length,
滚动方向:轴垂直,
收缩膜:对,
物理:物理(),
填充:边缘组。对称(水平:18.0),
gridDelegate:SliverGridDelegateWithFixedCrossAxisCount(
交叉轴计数:4,
交叉轴间距:15.0,
主轴间距:15.0,
儿童视角:4.0/7.0,
),
itemBuilder:(上下文,索引){
var类别=分类列表[索引];
双倍持续时间=指数/2;
返回法德纳尼玛化(
duration.toInt(),
儿童:手势检测器(
onTap:(){
打印(widget.subCategory[索引]['Items']);
设置状态(){
var items={'items':[]};
印刷品(项目);
});
},
子:容器(
宽度:80.0,
子:列(
儿童:[
容器(
宽度:60.0,
身高:60.0,
装饰:盒子装饰(
形状:BoxShape.circle,
边界:边界(
颜色:主题(上下文)
.accentColor
.withOpacity(.2)),
图像:装饰图像(
图片:资产评估(
“assets/icons/shirt.png”),
),
),
),
尺寸箱(高度:12.0),
正文(
widget.subCategory[索引]['Name'],
textAlign:textAlign.center,
maxLines:2,
溢出:TextOverflow.省略号,
风格:主题(上下文)
.文本主题
.副标题2,
).tr(),
],
),
)
),
);
},
),
],
),
),
),
);
}
}
现在您可以看到,我正在展示项目阵列中的产品。现在我需要做的是onTap我需要清除所有项目。因此,之后我将插入另一项,因此需要从项中删除所有数组
希望我的问题可以理解它的简单意思是当我点击GestureDetectore时,我需要清除项目中的所有数组。我从来没有使用过Flatter,但我想再次声明数组
var items = {'Items': []};
widget.subCategory.forEach((subcategory) {
items['Items'].addAll(subcategory['Items']);
});
//declare array again to empty array
var items = {'Items': []};
我从未使用过flutter,但我要说的是,只需再次声明数组
var items = {'Items': []};
widget.subCategory.forEach((subcategory) {
items['Items'].addAll(subcategory['Items']);
});
//declare array again to empty array
var items = {'Items': []};
您可以只指定一个新值,该值为空:
items['Items'] = [];
您还可以调用该方法:
如果希望对代码进行尽可能小的更改,请删除var
,如果不需要新变量,则需要更改现有变量:
您可以只指定一个新值,该值为空:
items['Items'] = [];
您还可以调用该方法:
如果希望对代码进行尽可能小的更改,请删除var
,如果不需要新变量,则需要更改现有变量:
虽然您可以通过点击按钮清除列表,但当调用“构建”时,列表将再次添加
@override
Widget build(BuildContext context) {
print('browse subcategory');
print(widget.subCategory);
widget.subCategory.forEach((subcategory) {
items['Items'].addAll(subcategory['Items']);
});
所以你需要移动初始化列表代码
class _BrowserCategoryPage2State extends State<BrowserCategoryPage2> {
var items = {'Items': []};
@override
void initState() {
super.initState();
print(widget.subCategory);
widget.subCategory.forEach((subcategory) {
items['Items'].addAll(subcategory['Items']);
});
print(items);
print('sada');
}
@override
Widget build(BuildContext context) {
print('browse subcategory');
return Scaffold(
appBar: buildAppBar(),
body: Container(
child: SingleChildScrollView(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
buildCategoryHeading(context),
GridView.builder(
itemCount: widget.subCategory.length,
scrollDirection: Axis.vertical,
shrinkWrap: true,
physics: ScrollPhysics(),
padding: EdgeInsets.symmetric(horizontal: 18.0),
gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
crossAxisCount: 4,
crossAxisSpacing: 15.0,
mainAxisSpacing: 15.0,
childAspectRatio: 4.0 / 7.0,
),
itemBuilder: (context, index) {
var category = categoryList[index];
double duration = index / 2;
return FadeInAnimation(
duration.toInt(),
child: GestureDetector(
onTap: (){
print(widget.subCategory[index]['Items']);
setState(() {
items = {'Items': []};
// Or
// items['Items'].clear();
print(items);
});
},
child: Container(
width: 80.0,
child: Column(
children: <Widget>[
Container(
width: 60.0,
height: 60.0,
decoration: BoxDecoration(
shape: BoxShape.circle,
border: Border.all(
color: Theme.of(context)
.accentColor
.withOpacity(.2)),
image: DecorationImage(
image: AssetImage(
'assets/icons/shirt.png'),
),
),
),
SizedBox(height: 12.0),
Text(
widget.subCategory[index]['Name'],
textAlign: TextAlign.center,
maxLines: 2,
overflow: TextOverflow.ellipsis,
style: Theme.of(context)
.textTheme
.subtitle2,
).tr(),
],
),
)
),
);
},
),
],
),
),
),
);
}
}
class\u BrowserCategoryPage2State扩展状态{
var items={'items':[]};
@凌驾
void initState(){
super.initState();
打印(小部件子类别);
widget.subCategory.forEach((子类别){
items['items'].addAll(子类别['items']);
});
印刷品(项目);
印刷品(“萨达”);
}
@凌驾
小部件构建(构建上下文){
打印(“浏览子类别”);
返回脚手架(
appBar:buildAppBar(),
主体:容器(
子:SingleChildScrollView(
子:列(
crossAxisAlignment:crossAxisAlignment.start,
儿童:[
buildCategoryHeading(上下文),
GridView.builder(
itemCount:widget.subCategory.length,
滚动方向:轴垂直,
收缩膜:对,
物理:物理(),
填充:边缘组。对称(水平:18.0),
gridDelegate:SliverGridDelegateWithFixedCrossAxisCount(
交叉轴计数:4,
交叉轴间距:15.0,
主轴间距:15.0,
儿童视角:4.0/7.0,
),
itemBuilder:(上下文,索引){
叶酸变种
class _BrowserCategoryPage2State extends State<BrowserCategoryPage2> {
var items = {'Items': []};
@override
void initState() {
super.initState();
print(widget.subCategory);
widget.subCategory.forEach((subcategory) {
items['Items'].addAll(subcategory['Items']);
});
print(items);
print('sada');
}
@override
Widget build(BuildContext context) {
print('browse subcategory');
return Scaffold(
appBar: buildAppBar(),
body: Container(
child: SingleChildScrollView(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
buildCategoryHeading(context),
GridView.builder(
itemCount: widget.subCategory.length,
scrollDirection: Axis.vertical,
shrinkWrap: true,
physics: ScrollPhysics(),
padding: EdgeInsets.symmetric(horizontal: 18.0),
gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
crossAxisCount: 4,
crossAxisSpacing: 15.0,
mainAxisSpacing: 15.0,
childAspectRatio: 4.0 / 7.0,
),
itemBuilder: (context, index) {
var category = categoryList[index];
double duration = index / 2;
return FadeInAnimation(
duration.toInt(),
child: GestureDetector(
onTap: (){
print(widget.subCategory[index]['Items']);
setState(() {
items = {'Items': []};
// Or
// items['Items'].clear();
print(items);
});
},
child: Container(
width: 80.0,
child: Column(
children: <Widget>[
Container(
width: 60.0,
height: 60.0,
decoration: BoxDecoration(
shape: BoxShape.circle,
border: Border.all(
color: Theme.of(context)
.accentColor
.withOpacity(.2)),
image: DecorationImage(
image: AssetImage(
'assets/icons/shirt.png'),
),
),
),
SizedBox(height: 12.0),
Text(
widget.subCategory[index]['Name'],
textAlign: TextAlign.center,
maxLines: 2,
overflow: TextOverflow.ellipsis,
style: Theme.of(context)
.textTheme
.subtitle2,
).tr(),
],
),
)
),
);
},
),
],
),
),
),
);
}
}