可以在每条消息的外层包裹一个Dismissible组件,然后设置onDismissed属性为删除该条消息的方法。具体实现代码如下:

child: Dismissible( key: Key(index.toString()), // 唯一标识符 direction: DismissDirection.endToStart, // 只允许从右向左滑动删除 onDismissed: (direction) { setState(() { _messages.removeAt(index); Global.messages_pure = _messages.map((e) => e['message']).join('\n'); }); }, background: Container( color: Colors.red, child: Icon(Icons.delete, color: Colors.white), alignment: Alignment.centerRight, padding: EdgeInsets.only(right: 16.0), ), child: Padding( padding: EdgeInsets.symmetric(vertical: 4.0), child: GestureDetector( onDoubleTap: () { Clipboard.setData(ClipboardData(text: message)); ScaffoldMessenger.of(context).showSnackBar( SnackBar( content: Text('已复制到剪贴板'), duration: Duration(seconds: 1), ), ); }, child: Row( mainAxisAlignment: sender == '我' ? MainAxisAlignment.end : MainAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start, children: [ if (sender != '我') SizedBox(width: 8.0), Flexible( child: Container( padding: EdgeInsets.symmetric(horizontal: 16.0, vertical: 8.0), decoration: BoxDecoration( color: sender == '我' ? Global.home_currentcolor : Theme.of(context).brightness == Brightness.light ? Colors.grey[200] : Colors.grey[800], borderRadius: BorderRadius.circular(20.0), ), child: MarkdownBody( data: message!, ), ), ), if (sender == '我') SizedBox(width: 8.0), ], ), ), ), )

可以帮我把每个消息旁边都加一个删除按钮吗按下去删掉那条消息import dartasync;import dartconvert;import packageanimate_doanimate_dodart;import packageanimated_text_kitanimated_text_kitdart;import packagediodiodart;import packageflut

原文地址: https://www.cveoy.top/t/topic/gqF7 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录