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
════════════════════════════════════════════════════════════════════════════════════════════════════