Flutter 飞空阵阵怎么办

Flutter 飞空阵阵怎么办,flutter,Flutter,颤振我通过数组中的forEach循环添加数据 代码 class\u BrowserCategoryPage2State扩展状态{ var items={'items':[]}; @凌驾 小部件构建(构建上下文){ 打印(“浏览子类别”); 打印(小部件子类别); widget.subCategory.forEach((子类别){ items['items'].addAll(子类别['items']); }); 印刷品(项目); 印刷品(“萨达”); 返回脚手架( appBar:buildAppB

颤振我通过数组中的forEach循环添加数据

代码

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(),
                            ],
                          ),
                        )
                    ),
                  );
                },
              ),
              
            ],
          ),
        ),
      ),
    );
  }
}