首页 > 解决方案 > 滚动时小部件闪烁并消失

问题描述

我已经为此失眠了。

我正在尝试在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),
          ],
        )
      ],
    );
  }
  

尝试的事情:

编辑: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只是返回图表的各种参数,我认为这无关紧要。

标签: flutterdart

解决方案


尝试替换ListViewSingleChildScrollView

ListView默认情况下,在颤振中使用它在 Android 中调用的RecyclerView方法来有效地使用渲染资源。如果您对这里的文章感兴趣 https://medium.com/1mgofficial/how-recyclerview-works-internally-71290de5d2c4


推荐阅读