大佬教程收集整理的这篇文章主要介绍了显示 SnackBar() 小部件时出现“英雄小部件不能是另一个英雄小部件的后代”问题,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我用英雄包裹了一个脚手架。从抽屉中打开子页面并显示 Snackbar() 小部件时,使用
ScaffoldMessenger.of(context).showSnackbar(snackbar);
我收到错误
A Hero Widget cAnnot be the descendant of another Hero Widget.
'package:Flutter/src/Widgets/heroes.dart':
Failed assertion: line 375 pos 7: 'context.findAncestorWidgetOfExactType<Hero>() == null'
找到临时解决问题的解决方案:
向脚手架添加全局密钥
final _scaffoldKey = GlobalKey<ScaffoldState>();
并用
调用小吃店_scaffoldKey.currentState..showSnackbar(snackbar); //this is working but deprecated
也试过了
ScaffoldMessenger.of(_scaffoldKey.currentContext).showSnackbar(snackbar); //also leads to the error with the Hero
编辑 - 在 GitHub 上提交了一个问题: https://github.com/flutter/flutter/issues/79359
你不能在 Hero
上使用 Scaffold
动画,因为它里面有英雄动画,
特别是在 FloaTingActionButton
上,如果您的 Scaffold
中有 fab,请尝试删除它,否则添加一个 Container
作为 Scaffold
的主体并将其包装起来。与Hero
以上是大佬教程为你收集整理的显示 SnackBar() 小部件时出现“英雄小部件不能是另一个英雄小部件的后代”问题全部内容,希望文章能够帮你解决显示 SnackBar() 小部件时出现“英雄小部件不能是另一个英雄小部件的后代”问题所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。