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