带有导航器的颤振模态底部工作表未按预期弹出
Posted
技术标签:
【中文标题】带有导航器的颤振模态底部工作表未按预期弹出【英文标题】:Flutter Modal Bottom Sheet with Navigator does not pop as expected 【发布时间】:2022-01-18 04:53:04 【问题描述】:我与ModalBottomSheet 合作,我喜欢这个包。但是,我在尝试在 ModalBottomSheet 中导航时遇到了问题。
这里是ScreenVideo,以便更好地理解。
如您所见,视图显示为 ModalBottomSheet。但是当弹出它时,它不是简单地解散到底部,而是弹出到带有 MaterialPage Pop 动画的某个空屏幕。
我更改了代码,以便可以在 ModalBottomSheet 中使用 MaterialPageRoute-Animation 进行推送。在此之前,一切都按预期工作。
这是我的主页:
class _AboutScreenState extends State<AboutScreen>
@override
Widget build(BuildContext context)
return Material(
color: AppColors.primary,
child: Navigator(
onGenerateRoute: (settings) => MaterialPageRoute(
builder: (context2) => Builder(
builder: (context) => CupertinoPageScaffold(
backgroundColor: AppColors.secondary,
resizeToAvoidBottomInset: false,
child: SafeArea(
child: Padding(
padding: EdgeInsets.all(sidePadding),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Row(
mainAxisAlignment: MainAxisAlignment.end,
children: [
IconButtonWithExpandedTouchTarget(
onTapped: ()
Navigator.pop(context);
,
svgPath: 'assets/icons/down.svg',
),
],
),
Text(
'About',
style: AppTextStyles.montserratH2SemiBold,
),
...
RoundedCornersTextButton(
title: 'Impressum',
onTap: ()
Navigator.pop(context);
,
textColor: AppColors.primary,
backgroundColor: AppColors.secondary,
borderColor: AppColors.primary,
),
],
),
),
)),
),
),
),
);
我只是关注这个example。我在这里想念什么?使用上面的代码,我可以按预期使用 MaterialPageRoute 动画推入 ModalSheet,但弹出第一个屏幕会带来问题......
如果您需要更多信息,请告诉我!任何帮助表示赞赏:)
【问题讨论】:
你试过使用build
的BuildContext
吗?在示例中,它在pop
期间使用rootContext
。
@rickimaru 是的,就是这样!谢谢你的帮助:)
【参考方案1】:
我认为您使用了错误的上下文。该示例弹出rootContext
,它来自层次结构中最顶层的小部件。您正在使用 context
弹出,在层次结构中的最低构建器中定义。
【讨论】:
谢谢!我没看到...它现在按预期工作:)【参考方案2】:我相信您使用的上下文不正确。 rootContext 来自层次结构中最顶层的小部件,它是使示例弹出的原因。您从层次结构中最低的构建器中弹出,这是由上下文决定的。
【讨论】:
您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center。以上是关于带有导航器的颤振模态底部工作表未按预期弹出的主要内容,如果未能解决你的问题,请参考以下文章