当前位置: 首页 > 知识库问答 >
问题:

无法在onDismissible中删除

施辉
2023-03-14
return ListView.builder(
  itemCount: count,
  itemBuilder: (BuildContext context, int position) {
    final ThemeData theme = Theme.of(context);

    return Dismissible(

      key: Key(this.objs[position].id.toString()),
      onDismissed: (direction) {
        setState(() async {
          int result = await helper.delete(this.objs[position].id);
        });
        Scaffold.of(context)
            .showSnackBar(SnackBar(
            content: Text(this.objs[position].title + "dismissed")));
      },
      background: Container(
          color: Colors.red,
          child: const ListTile(
              leading: Icon(Icons.delete, color: Colors.white, size: 36.0)
          )
      ),

      child: ListTile(
        leading: CircleAvatar(
          backgroundColor: getColor(this.objs[position].priority),
          child: Text(this.objs[position].id.toString()),
        ),
        title: Text(obj[position].title),
        subtitle: Text(objs[position].date),
        onTap: () {
          debugPrint("Tapped on " + objs[position].id.toString());
          navigateToDetail(this.objs[position]);
        },
      ),
    );
  },
);
    Future<int> delete(int id) async {
    Database db = await this.db;
    var result = await db.rawDelete("DELETE FROM $tblT WHERE $colId=$id");
    return result;
  }

更新:移动了删除部分,在setState之前,我得到了错误:一个被解雇的可解雇小部件仍然是树的一部分,每次我刷到解雇

共有1个答案

夏季萌
2023-03-14

您可以为ondisceled:属性尝试以下代码。

问题是ondressed函数内部的未来。我们需要重新排序async和await关键字。

无论如何,在移除连续项目时,请注意时间安排。

onDismissed: (direction) async {
    String title = this.obj[position].title;
    await helper.delete(this.obj[position].id);
    setState(() {});
    Scaffold.of(context)
       .showSnackBar(SnackBar(content: Text("$title dismissed")));
},
 类似资料:
  • 问题是: 格式如下:2015-10-23T03:34:40 当我试图这样解决问题时: 我在另一个地方遇到问题。Java需要在我的服务calass中将type更改为String类型: 如果我将更改为,则无法使用方法plusDay(1):((( 我也尝试了这样的方法: 格式与字符相同' T' 2018-09-13T05:42:28 这种方式也不适合我: 因为a不能将类型改为字符串 这种方式不起作用,因

  • 在日食靛蓝中升级Egit后,一旦创建,我就无法从Eclipse内部删除它。如果我右键单击 git 存储库视图中的存储库并转到删除,则没有任何反应。要删除它,我必须关闭Eclipse,然后从git文件夹中手动删除存储库。我尝试删除git和ssh文件夹,升级Java并升级到Eclipse开普勒,结果相同。 我有: < li>Windows 7家庭高级版 < li>Eclipse开普勒(64位)- 编辑

  • 我正在用Geb(0.12.2)和Spock定义一些规范来测试我的前端。我的应用程序的登录系统依赖于我们内部IDP的SSO。一旦我进入我的应用程序的私人部分,如果以前没有在我们的IDP中登录,它将重定向到IDP主页,然后登录并重定向到您最初询问的私人URL。 注销。 删除IDP设置的cookie。 我希望初始化每一个GebSpec类,而不需要任何以前的cookie或以前GebSpec执行中的状态,并

  • 我想删除所有具有某些lineId的记录,以保存另一个具有相同lineId的记录(作为刷新),但删除后我无法保存任何内容。没有任何错误,但数据库中没有我的记录。 当我没有删除代码时,一切都会正确保存。

  • 这只是为了删除。插入和检索工作良好。 我在谷歌搜索这个问题,但唯一的结果是解决了封闭的结果集,而这里不是这样。

  • 无法从外壳中删除集合, 集合可用并且我的 php 脚本正在访问它的东西(选择|更新) 但当我使用: 它给了我一个错误: