在子树中有多个英雄共享相同的标签

277
我正在尝试使用路由从一个屏幕导航到另一个屏幕。当我点击页面上提供的路由移动按钮时,出现错误。
I/flutter ( 8790): Another exception was thrown: There are multiple heroes that share the same tag within a subtree.

这是代码:

路由:

 <String, WidgetBuilder>{
    '/first':(BuildContext context) =>NavigatorOne() ,
    '/second':(BuildContext context) =>NavigatorTwo(),
    '/third':(BuildContext context) =>NavigatorThree(),

  },

Navigator.of(context).pushNamed('/first');
Navigator.of(context).pushNamed('/second');
Navigator.of(context).pushNamed('/third');

class NavigatorOne extends StatefulWidget {
  @override
  _NavigatorOneState createState() =>  _NavigatorOneState();
}

class _NavigatorOneState extends State<NavigatorOne> {
  @override
  Widget build(BuildContext context) {
    return Scaffold(

      appBar: AppBar(),
      body: Container(
      color: Colors.green,
      child: RaisedButton(child: Text(' one 1'),onPressed: (){
        Navigator.of(context).pushNamed('/second');
      },),
    ),
    ); 
  }
}

错误信息:

══╡ 调度器库捕获的异常 ╞═════════════════════════════════════════════════════════ I/flutter (21786): 调度回调期间抛出以下断言: I/flutter (21786): 在子树中有多个共享相同标记的 Hero。 I/flutter (21786): 对于将要进行动画处理的每个子树(通常是一个PageRoute子树),每个Hero必须具有唯一的非空标记。 I/flutter (21786): 在本例中,多个hero具有以下标记:<默认浮动操作按钮标记>

如何解决?

13个回答

0
在我的情况下,我使用了Get.offAllNamed("/page"),导致出现了这个错误。为了解决它,我使用了Get.toNamed("/page")

0

如果有多个具有相同标签的项目,只需设置tag: Uuid()


0
 floatingActionButton: FloatingActionButton(
        heroTag: null,
        onPressed: () async {
          final value = await Navigator.push(
              context, MaterialPageRoute(builder: (context) => const Cargar()));
          if (value == "inserted") {
            setState(() {});
          }
        },
        child: const Icon(Icons.person_add_alt_1),
      ),

floatingActionButton: FloatingActionButton( heroTag: null, onPressed: () async { final value = await Navigator.push( context, MaterialPageRoute(builder: (context) => const Cargar())); if (value == "inserted") { setState(() {}); } }, child: const Icon(Icons.person_add_alt_1), ),

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接