flutter - 滚动时小部件闪烁并消失
问题描述
我已经为此失眠了。
我正在尝试在ListView
(用于滚动)内显示图表。由于某种原因,Card
滚动时的内容会闪烁并随机完全消失(Card
尽管它本身仍然可见)。
知道为什么会这样吗?
(...) ListView (...)
children: [Row ( children: [buildChartBox()] )] (...)
Expanded buildChartBox() {
return Expanded(
child: Card(
child: Padding(
padding: const EdgeInsets.all(20.0),
child: Column(
children: [
Column(
mainAxisSize: MainAxisSize.min,
children: [
chartTitles(
title: 'Items',
subtitle: 'by value'),
SizedBox(
height: 300,
child: ValuesChart(data: calculateValues(items)))
],
),
],
),
),
),
);
}
Row chartTitles({String title = '', String subtitle = ''}) {
return Row(
mainAxisAlignment: MainAxisAlignment.start,
children: [
Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(title, style: text_charttitle),
Text(subtitle, style: text_chartsubtitle),
],
)
],
);
}
尝试的事情:
- 这两个最初都是无状态的小部件;我改用简单的方法来简化,但它并没有改变奇怪的行为。
- 将 替换为
chartTitles
return
空Container
(即删除标题)确实可以缓解问题。然后图表会保持显示状态,但也会轻微闪烁。 ListView
用 a替换SingleChildScrollView
不会改变任何东西。
编辑:ValuesChart 的代码:
import 'package:fl_chart/fl_chart.dart';
class ValuesChart extends StatelessWidget {
final Map<String, int> data;
const ValuesChart({required this.data});
@override
Widget build(BuildContext context) {
return Container(
child: PieChart(
_theData(data),
));
}
}
注意我正在使用一个名为“fl_chart”的包。_theData
只是返回图表的各种参数,我认为这无关紧要。
解决方案
尝试替换ListView
为SingleChildScrollView
ListView
默认情况下,在颤振中使用它在 Android 中调用的RecyclerView
方法来有效地使用渲染资源。如果您对这里的文章感兴趣
https://medium.com/1mgofficial/how-recyclerview-works-internally-71290de5d2c4
推荐阅读
- php - How to get employee gender by id number using php
- xcode - 我无法为 Iphone 生成 API,有人可以帮助我吗?
- video - 有哪些很好的资源可以用来学习网络上的视频技术?
- java - 等到玩家发送消息 - Java / Spigotmc
- python - 保存使用 osmnx 生成的图形时,背景颜色不会保持蓝色
- python - 如何从python中的函数cgi.escape()中获取str
- sql - 如何消除 SQL 查询的结果并仅获取某些非重复信息?
- amazon-web-services - 尽管允许“s3:GetObject”操作,但来自 S3 的 403
- android - 如果函数运行超过指定时间,则中断函数
- python - 如何将http附件转换为文件?