Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Dart 颤振不起作用_Dart_Flutter - Fatal编程技术网

Dart 颤振不起作用

Dart 颤振不起作用,dart,flutter,Dart,Flutter,只是尝试构建一个简单的应用程序,其中包含一个列表,您可以点击进入详细信息页面,左右滑动以执行一些操作 列表页面的代码如下所示。然而,一旦我添加了可忽略项,轻敲停止工作,刷卡也不起作用 当我启用debugPaintPointersEnabled时,列表平铺(行)不会响应任何点击。奇怪的是,我使用的代码几乎相同,但不知道为什么我的代码不起作用,但示例起作用了。如有任何建议,将不胜感激!谢谢 import 'package:flutter/material.dart'; import 'package

只是尝试构建一个简单的应用程序,其中包含一个列表,您可以点击进入详细信息页面,左右滑动以执行一些操作

列表页面的代码如下所示。然而,一旦我添加了可忽略项,轻敲停止工作,刷卡也不起作用

当我启用debugPaintPointersEnabled时,列表平铺(行)不会响应任何点击。奇怪的是,我使用的代码几乎相同,但不知道为什么我的代码不起作用,但示例起作用了。如有任何建议,将不胜感激!谢谢

import 'package:flutter/material.dart';
import 'package:xxx/routes/utils.dart';
import 'package:xxxx/models/SomeItem.dart'; 
import 'SomeItem_DoSth.dart';
import 'package:xxxxxh/constants.dart';

class SomeItemListRoute extends StatefulWidget {
  @override
  _SomeItemListState createState() => new _SomeItemListState();
}

class _SomeItemListState extends State<SomeItemListRoute> {
  List<SomeItem> SomeItemList;
  @override
  Widget build(BuildContext context) {
    SomeAppDb.get().getSomeItems().then((SomeItems) {
      if (SomeItems != null) {
        setState(() {
          SomeItemList = SomeItems;
        });
      }
    });
    if (SomeItemList == null || SomeItemList.length <= 0) {
      return emptyView("No items yet");
    }
    return new Container(
        child: new ListView.builder(
      itemCount: SomeItemList.length,
      itemBuilder: (context, index) {
        return new Dismissible(
            key: new ObjectKey(SomeItemList[index]),
            onDismissed: (DismissDirection direction) {
              var taskID = SomeItemList[index].id;
              setState(() {
                SomeItemList.removeAt(index);
              });
              if (direction == DismissDirection.endToStart) {
                SomeAppDb
                    .get()
                    .updateSomeItemStatus(taskID, SomeItemStatus.COMPLETE)
                    .then((value) {
                  Scaffold.of(context).showSnackBar(new SnackBar(
                      content: new Text("Completed"),
                      backgroundColor: Colors.green));
                });
              } else {
                SomeAppDb.get().deleteSomeItem(taskID).then((value) {
                  Scaffold.of(context).showSnackBar(new SnackBar(
                      content: new Text("Deleted"),
                      backgroundColor: Colors.red));
                });
              }
            },
            background: new Container(
              color: Colors.red,
              child: new ListTile(
                leading: new Icon(Icons.delete, color: Colors.white),
              ),
            ),
            secondaryBackground: new Container(
              color: Colors.green,
              child: new ListTile(
                trailing: new Icon(Icons.check, color: Colors.white),
              ),
            ),
            child: SomeItemRow(SomeItemList[index]));
      },
    ));
  }
}

class SomeItemRow extends StatelessWidget {
  SomeItem SomeItem;
  static final date_label = "Date";
  SomeItemRow(SomeItem) {
    this.SomeItem = SomeItem;
  }

  @override
  Widget build(BuildContext context) {
    return new GestureDetector(
        onTap: () {
          Navigator.of(context).push(new MaterialPageRoute(
            builder: (context) {
              return SomeItemDoSthRoute();
            },
          ));
        },
        child: Column(
          children: <Widget>[
            new Container(
              margin: const EdgeInsets.symmetric(vertical: PADDING_TINY),
              decoration: new BoxDecoration(
                border: new Border(
                  left: new BorderSide(
                    width: 4.0,
                    color: Colors.blue,
                  ),
                ),
              ),
              child: new Padding(
                padding: const EdgeInsets.all(PADDING_SMALL),
                child: new Column(
                  crossAxisAlignment: CrossAxisAlignment.start,
                  children: <Widget>[
                    new Padding(
                      padding: const EdgeInsets.only(
                          left: PADDING_SMALL, bottom: PADDING_VERY_SMALL),
                      child: new Text(SomeItem.DoSthNo,
                          style: new TextStyle(
                              fontSize: FONT_SIZE_TITLE,
                              fontWeight: FontWeight.bold)),
                    ),
                    new Container(),
                    new Padding(
                      padding: const EdgeInsets.only(
                          left: PADDING_SMALL, bottom: PADDING_VERY_SMALL),
                      child: new Row(
                        children: <Widget>[
                          new Text(
                            "Date Placeholder",
                            style: new TextStyle(
                                color: Colors.grey, fontSize: FONT_SIZE_DATE),
                            key: new Key(date_label),
                          ),
                          new Expanded(
                            child: new Column(
                              crossAxisAlignment: CrossAxisAlignment.end,
                              children: <Widget>[
                                new Row(
                                  mainAxisAlignment: MainAxisAlignment.end,
                                  children: <Widget>[
                                    new Text('Consignee Placeholder',
                                        style: new TextStyle(
                                            color: Colors.grey,
                                            fontSize: FONT_SIZE_LABEL)),
                                    new Container(
                                      margin: const EdgeInsets.symmetric(
                                          horizontal: 8.0),
                                      width: 8.0,
                                      height: 8.0,
                                      child: new CircleAvatar(
                                        backgroundColor: Colors.red,
                                      ),
                                    )
                                  ],
                                ),
                              ],
                            ),
                          )
                        ],
                      ),
                    ),
                  ],
                ),
              ),
            ),
            new Container(
                decoration: new BoxDecoration(
              border: new Border(
                bottom: new BorderSide(
                  width: 0.5,
                  color: Colors.grey,
                ),
              ),
            ))
          ],
        ));
  }
}
导入“包装:颤振/材料.省道”;
导入“包:xxx/routes/utils.dart”;
导入“包:xxxx/models/SomeItem.dart”;
导入“SomeItem_DoSth.dart”;
导入“包:XXXXX H/constants.dart”;
类SomeItemListRoute扩展StatefulWidget{
@凌驾
_SomeItemListState createState()=>new_SomeItemListState();
}
类_SomeItemListState扩展了状态{
列出一些项目列表;
@凌驾
小部件构建(构建上下文){
SomeAppDb.get().getSomeItems().then((SomeItems){
if(SomeItems!=null){
设置状态(){
SomeItemList=SomeItems;
});
}
});

如果(SomeItemList==null | | SomeItemList.length与上面nomad评论的一样,您的代码包含太多的个人变量,这使得其他人很难重新创建您的确切问题。我可以创建一个与上面类似的可忽略功能。我建议您首先从工作布局开始,如下面的代码,然后添加更多功能nality一次一块找出破坏布局的因素。从使用硬编码值的仅演示内容开始,然后使用模拟数据,然后添加这些函数调用,最后用数据库中的真实数据替换模拟数据。当您找到确切原因时,您将知道如何解决该问题,或者可以发布一个更详细的问题。

import'package:flutter/material.dart';

class SwipeLeftRightDismissible extends StatefulWidget {
  @override
  _SwipeLeftRightDismissibleState createState() {
    return new _SwipeLeftRightDismissibleState();
  }

}

class _SwipeLeftRightDismissibleState extends State<SwipeLeftRightDismissible> {
  List<String> _itemList;


  @override
  void initState() {
    super.initState();
    _itemList = ["first", "second", "third", "fourth"];
  }

  @override
  Widget build(BuildContext context) {
    return new Scaffold(
      body: new Container(
        child: new ListView.builder(
            itemCount: _itemList.length,
            itemBuilder: (context, index) {
              return new Dismissible(
                  key: new ObjectKey(_itemList[index]),
                  child: ItemRow(_itemList[index]),
                onDismissed: (direction) {
                  setState(() {
                    _itemList.removeAt(index);
                  });
                    if (direction == DismissDirection.endToStart) {
                      debugPrint("dismiss end to start");
                    } else {
                      debugPrint("dismiss start to end");
                    }
                },
                background: new Container(
                  color: Colors.red,
                  child: new ListTile(
                    leading: new Icon(Icons.delete, color: Colors.white),
                  ),
                ),
                secondaryBackground: new Container(
                  color: Colors.green,
                  child: new ListTile(
                    trailing: new Icon(Icons.check, color: Colors.white),
                  ),
                ),
              );
            }
        ),
      ),
    );
  }
}

class ItemRow extends StatelessWidget {
  final String item;
  ItemRow(this.item);

  @override
  Widget build(BuildContext context) {
    return new GestureDetector(
      onTap: () {
        Navigator.push(context, new MaterialPageRoute(
            builder: (context) => new SwipeLeftRightDismissible()));
      },
      child: Column(
        children: <Widget>[
          new Container(
            margin: const EdgeInsets.symmetric(vertical: 4.0),
            decoration: new BoxDecoration(
              border: new Border(
                left: new BorderSide(
                  width: 4.0,
                  color: Colors.blue,
                ),
              ),
            ),
            child: new Padding(
              padding: const EdgeInsets.all(8.0),
              child: new Column(
                crossAxisAlignment: CrossAxisAlignment.start,
                children: <Widget>[
                  new Padding(
                    padding: const EdgeInsets.only(
                        left: 8.0, bottom: 4.0),
                    child: new Text(item,
                        style: new TextStyle(
                            fontWeight: FontWeight.bold)),
                  ),
                  new Container(),
                  new Padding(
                    padding: const EdgeInsets.only(
                        left: 4.0, bottom: 4.0),
                    child: new Row(
                      children: <Widget>[
                        new Text(
                          "Date Placeholder",
                          style: new TextStyle(
                              color: Colors.grey, ),
                        ),
                        new Expanded(
                          child: new Column(
                            crossAxisAlignment: CrossAxisAlignment.end,
                            children: <Widget>[
                              new Text("column 1"),
                              new Text("column 2"),
                            ],
                          ),
                        )
                      ],
                    ),
                  ),
                ],
              ),
            ),
          ),
          new Container(
              decoration: new BoxDecoration(
                border: new Border(
                  bottom: new BorderSide(
                    width: 0.5,
                    color: Colors.grey,
                  ),
                ),
              ))
        ],
      ),
    );
  }
}
import'package:flatter/material.dart';
类SwipeLeftRightDismissible扩展StatefulWidget{
@凌驾
_SwipeLeftRightDismissibleState createState(){
返回新的_swipeRefTrightDismissibleState();
}
}
类_swipeRefTrightDismissibleState扩展状态{
列表_itemList;
@凌驾
void initState(){
super.initState();
_itemList=[“第一”、“第二”、“第三”、“第四”];
}
@凌驾
小部件构建(构建上下文){
归还新脚手架(
主体:新容器(
子项:新建ListView.builder(
itemCount:_itemList.length,
itemBuilder:(上下文,索引){
返回新的可驳回的(
key:newobjectkey(_itemList[index]),
子项:ItemRow(_itemList[index]),
onDismissed:(方向){
设置状态(){
_itemList.removeAt(索引);
});
if(direction==DismissDirection.endToStart){
debugPrint(“从结束到开始关闭”);
}否则{
debugPrint(“从开始到结束的关闭”);
}
},
背景:新容器(
颜色:颜色,红色,
孩子:新的ListTile(
前导:新图标(Icons.delete,颜色:Colors.white),
),
),
第二个背景:新容器(
颜色:颜色。绿色,
孩子:新的ListTile(
尾随:新图标(Icons.check,颜色:Colors.white),
),
),
);
}
),
),
);
}
}
类ItemRow扩展了无状态小部件{
最后的字符串项;
itemrrow(this.item);
@凌驾
小部件构建(构建上下文){
返回新的手势检测器(
onTap:(){
推送(上下文,新材料路径)(
生成器:(context)=>newswipleftrightDismissible());
},
子:列(
儿童:[
新容器(
边距:常量边集。对称(垂直:4.0),
装饰:新盒子装饰(
边界:新边界(
左:新边界(
宽度:4.0,
颜色:颜色,蓝色,
),
),
),
孩子:新的填充物(
填充:常数边集全部(8.0),
子:新列(
crossAxisAlignment:crossAxisAlignment.start,
儿童:[
新填料(
填充:仅限常量边设置(
左:8.0,下:4.0),
子项:新文本(项,
样式:新文本样式(
fontWeight:fontWeight.bold),
),
新容器(),
新填料(
填充:仅限常量边设置(
左:4.0,下:4.0),
孩子:新的一排(
儿童:[
新文本(
“日期占位符”,
样式:新文本样式(
颜色:Colors.grey,),
),
新扩展(
子:新列(
crossAxisAlignment:crossAxisAlignment.end,
儿童:[
新案文(“第1栏”),
新案文(“第2栏”),
],
),
)
],
),
),
],
),
),
),
新容器(
装饰:新盒子装饰(
边界:新边界(
底部:新边线(
宽度:0.5,
颜色:颜色。灰色,