置顶带滚动效果_Flutter 实现钉钉消息列表效果(三)

7554073f533847412e9c1c2b5ce16164.png

上一篇: Flutter 实现钉钉消息列表效果(二)

依赖

flutter_slidable: ^0.5.5 # 包裹 ListView Item 实现可以左右滑动的扩展操作

实现效果如图

7c74a6a6470db1606d9f1dcc3c3b1f83.png

修改整体的 DTMessageScreen 布局

  • 使用 SingleChildScrollView + Column
@override
  Widget build(BuildContext context) {
    
    return Scaffold(
      backgroundColor: Colors.white,
      appBar: buildAppBar(context),
      body: SingleChildScrollView(
          controller: _scrollController,
          child: Column(
              children: <Widget>[
                  DTMessageSearchDecoration(),
                  DTMessageTopQuick(),
                  DTMessageTopMask(),
                  DTMessageListView(),
              ],
          ),
      )
    );
  }

实现一个 DTMessageListView 消息列表

  • ListView.builder 来构建出 ListView
  • 视图显示根据数据模型来显示不同的 Item
  • 创建 DTMessageModel 数据模型
  • 第三方 Slidable 添加扩展操作 (删除、取消置顶)
  • ListView 设置
    • shrinkWrap: true 适应父容器
    • physics: NeverScrollableScrollPhysics() ,禁止 ListView 自身的滚动效果,使用父组件的滚动,因为父组件是 SingleChildScrollView
@override
  Widget build(BuildContext context) {
    
    return ListView.builder(
      itemCount: _messageList.length,
      itemBuilder: (BuildContext context, int index) {
    
        DTMessageModel model = _messageList[index];
        return Slidable(
          actionPane: SlidableDrawerActionPane(),
          actionExtentRatio: 0.25,
          secondaryActions: <Widget>[
            IconSlideAction(
              caption: '取消置顶',
              color: Colors.black45,
              icon: Icons.more_horiz,
              onTap: () => _showSnackBar('More'),
            ),
            IconSlideAction(
              caption: '删除',
              color: Colors.redAccent,
              icon: Icons.del
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值