来源 1 "View2"-> 来源 2 "View3"-> 包含列表的表格 TL +--6ren">
gpt4 book ai didi

flutter - 重复使用内部带有 cupertino 导航栏的小部件

转载 作者:IT王子 更新时间:2023-10-29 07:12:27 31 4
gpt4 key购买 nike

我有一个列出一些结果的“表格列表”小部件,我想从 2 个不同的来源重用这个小部件。这是方法:

  • "View1"-> 来源 1
  • "View2"-> 来源 2
  • "View3"-> 包含列表的表格 TL
+--------------------+
| Source 1| |
+---------+ +----v-----+
|Table with|
|results |
+---------+ +----+-----+
| Source 2| ^
+--------------------+

每个源都有一个路由,在 TL 中传递信息。

这是 TLbuild 函数:

@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.

最佳答案

如错误所述 -

multiple heroes had the following tag: Default Hero tag for Cupertino navigation bars

当您使用 - CupertinoNavigationBar 两次时 - 没有定义 Hero 标签值,因此它选择默认值。默认

这里的技巧是将一些唯一的值传递给每个 CupertinoNavigationBar heroTag:

CupertinoNavigationBar(middle: Text('Post Recenti'),
heroTag: 'uniquevalue',), // Pass different unique value for each

Every source has a route that pass the information inside the TL.

也为 CupertinoNavigationBar heroTag: 传递 Unique 值:

关于flutter - 重复使用内部带有 cupertino 导航栏的小部件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54802114/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com