我用英雄包裹了一个脚手架。从抽屉中打开子页面并显示 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
答案 0 :(得分:0)
你不能在 Hero
上使用 Scaffold
动画,因为它里面有英雄动画,
特别是在 FloatingActionButton
上,如果您的 Scaffold
中有 fab,请尝试删除它,否则添加一个 Container
作为 Scaffold
的主体并将其包装起来。与Hero