问题描述
我想将嵌套滚动添加到自定义底部工作表。我需要的是,当内部列表很大并且可以滚动时,只能通过在对话框顶部滑动来删除它,而不能通过滑动列表来删除它。但是,当列表中的项目很少时,则可以在整个对话区域中滑动。 我试图通过 GestureDetector 解决这个问题,这样它就不会将滑动发送给父级,但它仅在列表不滚动时有效。 这是创建对话框的当前代码。 这是 showCustomModalBottomSheet 的调用
final res = await showCustomModalBottomSheet<T>(
context: context,builder: (context) {
return StreamBuilder<PaginationData<T>>(
stream: items,builder: (ctx,snapshot) {
final data = snapshot.data;
if (data == null) {
return Center(child: CircularLoader());
}
return CustomPaginationPicker(
title: title,onClosepressed: () {
wasdismissed = false;
Navigator.pop(context,selectedValue);
},onValueSelected: (v) {
wasdismissed = false;
Navigator.pop(context,v);
},loadNextPageCallback: loadNextPageCallback,loadedAllItems: data.loadedAllItems,itemCount: data.itemsCount,items: data.items,toText: toString,selectedItem: selectedValue,defaultText: defaultText,hasDefaultValue: hasDefaultValue,//controller: ModalScrollController.of(context),);
},);
},containerWidget: (_,animation,child) => FloatingModal(
child: child,padding: EdgeInsets.zero,),barrierColor: AppOverlays.black30,animationCurve: SpringCurve(0.08,6),);
我在 CustomPaginationPicker 的构建方法中返回的这个小部件树
return Column(
mainAxisSize: MainAxisSize.min,children: [
Container(
height: 56.h,color: AppColors.grayscale100,child: Stack(
alignment: Alignment.center,children: [
Align(
alignment: Alignment.center,child: Text(
title,style: TextStyles.bodyBoldM.copyWith(
color: AppColors.grayscale900,Positioned(
right: 22.w,child: IconButton(
padding: EdgeInsets.zero,iconSize: 12.w,icon: SvgPicture.asset(
AppIcons.crossM,color: AppColors.grayscale900,onpressed: onClosepressed,],ConstrainedBox(
constraints: BoxConstraints(maxHeight: 650.h),child: GestureDetector(
onVerticalDragUpdate: (_) {},onVerticalDragDown: (_) {},behavior: HitTestBehavior.defertochild,child: PaginationListView(
shrinkWrap: true,physics: BouncingScrollPhysics(),loadedAllItems: loadedAllItems,itemCount: hasDefaultValue ? itemCount + 1 : itemCount,itemBuilder:
hasDefaultValue ? withDefaultValue : withoutDefaultValue,controller: controller,);
我猜您需要使用 RenderObject 来找出列表的真实高度并执行不同的行为。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)