程序问答   发布时间:2022-06-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了显示 SnackBar() 小部件时出现“英雄小部件不能是另一个英雄小部件的后代”问题大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决显示 SnackBar() 小部件时出现“英雄小部件不能是另一个英雄小部件的后代”问题?

开发过程中遇到显示 SnackBar() 小部件时出现“英雄小部件不能是另一个英雄小部件的后代”问题的问题如何解决?下面主要结合日常开发的经验,给出你关于显示 SnackBar() 小部件时出现“英雄小部件不能是另一个英雄小部件的后代”问题的解决方法建议,希望对你解决显示 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,请注明来意。
标签:显示