记录flutter开发时滑动出现删除与编辑

该功能需要 flutter_slidable 支持,我用的是 flutter_slidable: ^0.6.0 ,以下为代码:
class AddressManage extends StatefulWidget {
  const AddressManage({super.key, this.fromSetting = 0});

  final int fromSetting;

  @override
  State createState() => _AddressManageState();
}

class _AddressManageState extends State {
  final String title = '地址管理';
  final AddressManageViewModel addressManage = AddressManageViewModel();
  final SlidableController _slidController = SlidableController();

  @override
  void initState() {
    super.initState();
    addressManage.initAddressManage().then((value) => setState(() {}));
  }

  @override
  void dispose() {
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    if (addressManage.isLoad) {
      return AppLoadPage(title);
    }
    return Scaffold(
      backgroundColor: AppColors.page,
      appBar: AppBarBasic(title),
      body: addressManage.list.isEmpty
          ? const EmptyPage(
              type: 1,
              text: '还未添加地址',
              bgColor: AppColors.page,
            )
          : ListView.builder(
              padding: EdgeInsets.only(top: 21.rpx),
              itemCount: addressManage.list.length,
              itemBuilder: (BuildContext context, int index) {
                AddressItem item = addressManage.list[index];
                return Slidable(
                  controller: _slidController,
                  actionExtentRatio: 0.20,
                  key: Key(item.id.toString()),
                  actionPane: const SlidableStrechActionPane(),
                  secondaryActions: [
                    AddressEditBtn(
                      onTap: () => addressManage.gotoEditAddress(
                        context,
                        item.id ?? 0,
                        call: () => addressManage
                            .updateAddressListObj()
                            .then((value) => setState(() {})),
                      ),
                    ),
                    AddressEditBtn(
                      type: 1,
                      onTap: () {
                        singleButtonDialog(
                          context,
                          title: '确认删除吗?',
                          type: 0,
                          cancel: () => Navigator.pop(context),
                          confirm: () {
                            Navigator.pop(context);
                            addressManage
                                .deleteAddress('${item.id}')
                                .then((value) => setState(() {}));
                          },
                        );
                      },
                    ),
                  ],
                  child: AddressItemBox(
                    item: item,
                    addressManage: addressManage,
                    fromSetting: widget.fromSetting,
                    callback: () => setState(() {}),
                  ),
                );
              },
            ),
      bottomNavigationBar: AddressBottomBtn(
        onPressed: () => addressManage.gotoAddressAdd(
          context,
          call: () => addressManage
              .updateAddressListObj()
              .then((value) => setState(() {})),
        ),
      ),
    );
  }
}

你可能感兴趣的:(Flutter,flutter)