Android 英雄动画中的RenderFlex溢出-颤振

Android 英雄动画中的RenderFlex溢出-颤振,android,ios,flutter,animation,dart,Android,Ios,Flutter,Animation,Dart,嗨,伙计们!这是我的问题。我有两个屏幕:主屏幕.dart和所有类别.dart。 当我从一开始导航到使用HeroAnimation设置CategoriesWidget()的动画时。动画可以正常工作,但是我的物理设备和iOS模拟器都出现了这个错误。CategoriesWidget()在两个屏幕中都是相同的,只是卡的数量在变化,但我认为这不是问题所在,因为如果我在两个屏幕中放置相同数量的卡,问题仍然会发生 HomeScreen body: ListView( padding: Edg

嗨,伙计们!这是我的问题。我有两个屏幕:
主屏幕.dart
所有类别.dart
。 当我从一开始导航到使用
HeroAnimation
设置
CategoriesWidget()的动画时。动画可以正常工作,但是我的物理设备和iOS模拟器都出现了这个错误。
CategoriesWidget()
在两个屏幕中都是相同的,只是卡的数量在变化,但我认为这不是问题所在,因为如果我在两个屏幕中放置相同数量的卡,问题仍然会发生

HomeScreen

body: ListView(
        padding: EdgeInsets.only(left: 20.0, top: 50.0, right: 20.0),
        children: <Widget>[
          Column(
            crossAxisAlignment: CrossAxisAlignment.start,
            children: <Widget>[
              // navBar
              randomPhrase(),
              searchBarHome(),
            ],
          ),
          Hero(
            tag: 'categories',
              child: CategoriesWidget(5, true)),
        ],
      ),

发生的事情是,你的小部件对于它们的父母来说太大了。渲染引擎为flutter工作的方式是父控件设置子控件的约束,子控件自己设置其大小。在这种情况下,一个小部件的高度大于父部件设置的约束

有不同的方法来解决此问题:

  • 您可以按照@RandomGuru的建议操作并减小小部件的大小(或增加父部件的限制),这将涉及将SizeBox(高度:10)增加45像素或将文本的侧面减少45像素

  • 在内部使用灵活的小部件。您可以使用Expanded来代替sizedbox,从而占用可用空间(而不是直接设置)

  • 使用灵活的文本。我喜欢,喜欢,喜欢这种情况下的AutoSizeText插件。它会根据父项的限制更改字体大小,并帮助您避免文本溢出的情况。此外,还有一个AutoSizeGroup设置,允许您根据最有限的情况设置文本大小,这样您就不会在不同的卡中有不同的文本大小

  • 使用滚动小部件。将溢出的内容包装到可滚动的小部件中,如Listview、CustomScrollWidget或SingleChildScrollView。在这种情况下,这显然是不合适的,因为在可滚动列表视图中滚动卡片上的信息会很奇怪。。。然而,当你溢出时,总是要记住这一点

  • 我非常非常非常推荐阅读这篇关于版面怪癖的媒体文章:
    具体来说,示例24和以下内容将介绍如何处理大型文本字符串。

    删除文本的高度并尝试减小其大小。我希望这有帮助。
    AllCategories Screen
    
    body: ListView(
            padding: EdgeInsets.only(left: 20.0, top: 50.0, right: 20.0),
            children: <Widget>[
              Column(
                crossAxisAlignment: CrossAxisAlignment.start,
                children: <Widget>[
                  SizedBox(height: 10.0),
                  Text(
                    'Explora nuestras categorias',
                    style: kSubheadingextStyle.copyWith(
                      fontSize: 22.0,
                      height: 1.5,
                    ),
                  ),
                  Hero(
                      tag: 'categories',
                      child: CategoriesWidget(categoriesData.length, false)),
                ],
              ),
            ],
          ),
    
    The Error in the Console
    ════════ (39) Exception caught by rendering library ════════════════════════════════════════════════
    A RenderFlex overflowed by 45 pixels on the bottom.
    The relevant error-causing widget was: 
      Column file:///Users/joansubiratsllaveria/AndroidStudioProjects/giramos_app/giramos/lib/components/categories.dart:35:20
    ════════════════════════════════════════════════════════════════════════════════════════════════════