我有一个“表列表”小部件,列出了一些结果,我想从2个不同的来源重用此小部件。 这是方法:
+--------------------+
| Source 1| |
+---------+ +----v-----+
|Table with|
|results |
+---------+ +----+-----+
| Source 2| ^
+--------------------+
每个来源都具有在 TL 内部传递信息的路由。
这是 TL 的build
功能:
@override
Widget build(BuildContext context) {
return CupertinoPageScaffold(
navigationBar: CupertinoNavigationBar(middle: Text('Post Recenti')),
child: PostsTableList(showPostForCategoryID)
);
}
但是当显示 TL 时,出现以下错误:
flutter: ══╡ EXCEPTION CAUGHT BY SCHEDULER LIBRARY ╞═════════════════════════════════════════════════════════
flutter: The following assertion was thrown during a scheduler callback:
flutter: There are multiple heroes that share the same tag within a subtree.
flutter: Within each subtree for which heroes are to be animated (typically a PageRoute subtree), each Hero
flutter: must have a unique non-null tag.
flutter: In this case, multiple heroes had the following tag: Default Hero tag for Cupertino navigation bars
flutter: with navigator NavigatorState#090ce(tickers: tracking 2 tickers)
flutter: Here is the subtree for one of the offending heroes:
flutter: # Hero(tag: Default Hero tag for Cupertino navigation bars with navigator NavigatorState#090ce(tickers: tracking 2 tickers), state: _HeroState#4dc1f)
flutter: # └KeyedSubtree-[GlobalKey#9d61d]
flutter: # └_TransitionableNavigationBar-[GlobalKey#f21fd Navigation bar render box]
flutter: # └ClipRect(renderObject: RenderClipRect#5922f relayoutBoundary=up1)
flutter: # └BackdropFilter(renderObject: RenderBackdropFilter#ca8c7 relayoutBoundary=up2)
flutter: # └DecoratedBox(bg: BoxDecoration(color: Color(0xccf8f8f8), border: Border(bottom: BorderSide(Color(0x4c000000), 0.0, BorderStyle.solid))), renderObject: RenderDecoratedBox#0c666 relayoutBoundary=up3)
flutter: # └AnnotatedRegion<SystemUiOverlayStyle>(renderObject: RenderAnnotatedRegion<SystemUiOverlayStyle>#21621 relayoutBoundary=up4)
flutter: # └_PersistentNavigationBar
flutter: # └SizedBox(height: 64.0, renderObject: RenderConstrainedBox#826b3 relayoutBoundary=up5)
flutter: # └SafeArea(avoid left padding, avoid top padding, avoid right padding, avoid bottom padding)
flutter: # └Padding(padding: EdgeInsets(0.0, 20.0, 0.0, 0.0), renderObject: RenderPadding#bebdd)
flutter: # └MediaQuery(MediaQueryData(size: Size(375.0, 667.0), devicePixelRatio: 2.0, textScaleFactor: 1.0, padding: EdgeInsets(0.0, 0.0, 0.0, 50.0), viewInsets: EdgeInsets.zero, alwaysUse24HourFormat: false, accessibleNavigation: falsedisableAnimations: falseinvertColors: falseboldText: false))
flutter: # └NavigationToolbar
flutter: # └CustomMultiChildLayout(renderObject: RenderCustomMultiChildLayoutBox#18992)
flutter: # └LayoutId-[<_ToolbarSlot.middle>](id: _ToolbarSlot.middle)
flutter: # └DefaultTextStyle(inherit: true, color: Color(0xff000000), family: .SF UI Text, size: 17.0, weight: 600, letterSpacing: -0.1, softWrap: wrapping at box width, overflow: clip)
flutter: # └Semantics(container: false, properties: SemanticsProperties, label: null, value: null, hint: null, hintOverrides: null, renderObject: RenderSemanticsAnnotations#abf4c relayoutBoundary=up1)
flutter: # └KeyedSubtree-[GlobalKey#0daf7 Middle]
flutter: # └Text("Categorie")
flutter: # └RichText(softWrap: wrapping at box width, maxLines: unlimited, text: "Categorie", renderObject: RenderParagraph#ad5eb relayoutBoundary=up2)
flutter:
flutter: When the exception was thrown, this was the stack:
flutter: #0 Hero._allHeroesFor.visitor.<anonymous closure> (package:flutter/src/widgets/heroes.dart:210:15)
flutter: #1 Hero._allHeroesFor.visitor (package:flutter/src/widgets/heroes.dart:220:12)
flutter: #2 ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:3755:14)
flutter: #3 Hero._allHeroesFor.visitor (package:flutter/src/widgets/heroes.dart:225:15)
flutter: #4 ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:3755:14)
flutter: #5 Hero._allHeroesFor.visitor (package:flutter/src/widgets/heroes.dart:225:15)
flutter: #6 MultiChildRenderObjectElement.visitChildren (package:flutter/src/widgets/framework.dart:4948:16)
flutter: #7 Hero._allHeroesFor.visitor (package:flutter/src/widgets/heroes.dart:225:15)
flutter: #8 SingleChildRenderObjectElement.visitChildren (package:flutter/src/widgets/framework.dart:4848:14)
flutter: #9 Hero._allHeroesFor.visitor (package:flutter/src/widgets/heroes.dart:225:15)
flutter: #10 ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:3755:14)
flutter: #11 Hero._allHeroesFor.visitor (package:flutter/src/widgets/heroes.dart:225:15)
flutter: #12 ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:3755:14)
flutter: #13 Hero._allHeroesFor.visitor (package:flutter/src/widgets/heroes.dart:225:15)
flutter: #14 ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:3755:14)
flutter: #15 Hero._allHeroesFor.visitor (package:flutter/src/widgets/heroes.dart:225:15)
flutter: #16 SingleChildRenderObjectElement.visitChildren (package:flutter/src/widgets/framework.dart:4848:14)
flutter: #17 Hero._allHeroesFor.visitor (package:flutter/src/widgets/heroes.dart:225:15)
flutter: #18 ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:3755:14)
flutter: #19 Hero._allHeroesFor.visitor (package:flutter/src/widgets/heroes.dart:225:15)
flutter: #20 ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:3755:14)
flutter: #21 Hero._allHeroesFor.visitor (package:flutter/src/widgets/heroes.dart:225:15)
flutter: #22 SingleChildRenderObjectElement.visitChildren (package:flutter/src/widgets/framework.dart:4848:14)
flutter: #23 Hero._allHeroesFor.visitor (package:flutter/src/widgets/heroes.dart:225:15)
flutter: #24 MultiChildRenderObjectElement.visitChildren (package:flutter/src/widgets/framework.dart:4948:16)
flutter: #25 Hero._allHeroesFor.visitor (package:flutter/src/widgets/heroes.dart:225:15)
flutter: #26 ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:3755:14)
flutter: #27 Hero._allHeroesFor.visitor (package:flutter/src/widgets/heroes.dart:225:15)
flutter: #28 ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:3755:14)
flutter: #29 Hero._allHeroesFor.visitor (package:flutter/src/widgets/heroes.dart:225:15)
flutter: #30 MultiChildRenderObjectElement.visitChildren (package:flutter/src/widgets/framework.dart:4948:16)
flutter: #31 Hero._allHeroesFor.visitor (package:flutter/src/widgets/heroes.dart:225:15)
flutter: #32 ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:3755:14)
flutter: #33 Hero._allHeroesFor.visitor (package:flutter/src/widgets/heroes.dart:225:15)
flutter: #34 ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:3755:14)
flutter: #35 Hero._allHeroesFor.visitor (package:flutter/src/widgets/heroes.dart:225:15)
flutter: #36 SingleChildRenderObjectElement.visitChildren (package:flutter/src/widgets/framework.dart:4848:14)
flutter: #37 Hero._allHeroesFor.visitor (package:flutter/src/widgets/heroes.dart:225:15)
flutter: #38 ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:3755:14)
flutter: #39 Hero._allHeroesFor.visitor (package:flutter/src/widgets/heroes.dart:225:15)
flutter: #40 SingleChildRenderObjectElement.visitChildren (package:flutter/src/widgets/framework.dart:4848:14)
flutter: #41 Element.visitChildElements (package:flutter/src/widgets/framework.dart:2686:5)
flutter: #42 Hero._allHeroesFor (package:flutter/src/widgets/heroes.dart:227:13)
flutter: #43 HeroController._startHeroTransition (package:flutter/src/widgets/heroes.dart:655:53)
flutter: #44 HeroController._maybeStartHeroTransition.<anonymous closure> (package:flutter/src/widgets/heroes.dart:630:11)
flutter: #45 _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:990:15)
flutter: #46 _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding.handleDrawFrame (package:flutter/src/scheduler/binding.dart:938:9)
flutter: #47 _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding._handleDrawFrame (package:flutter/src/scheduler/binding.dart:842:5)
flutter: #48 _invoke (dart:ui/hooks.dart:154:13)
flutter: #49 _drawFrame (dart:ui/hooks.dart:143:3)
flutter: ════════════════════════════════════════════════════════════════════════════════════════════════════
由于我是Flutter的新手,所以有什么我忘了的东西吗?我使用的方式有误吗?
Searching around我也发现了这一点,但我不知道这是否与它无关:
By default, only one [CupertinoNavigationBar] or [CupertinoSliverNavigationBar]
/// should be present in each [PageRoute] to support the default transitions.
/// Use [transitionBetweenRoutes] or [heroTag] to customize the transition
/// behavior for multiple navigation bars per route.
答案 0 :(得分:1)
如错误所述-
多个英雄具有以下标签:Cupertino的默认Hero标签 导航栏
您正在使用-CupertinoNavigationBar
两次-且未定义Hero标签值,因此无法选择默认值。Default
。
这里的技巧是向每个CupertinoNavigationBar
heroTag:
CupertinoNavigationBar(middle: Text('Post Recenti'),
heroTag: 'uniquevalue',), // Pass different unique value for each
每个来源都有一条传递TL内部信息的路由。
还要为CupertinoNavigationBar heroTag:
传递唯一值
答案 1 :(得分:1)
多个英雄使用以下标签:默认
因此,您正在使用两个或更多个需要herotag的小部件,而没有定义一个。解决方案很简单
为每个CupertinoNavigationBar()