在构建中无限调用 Flutter 函数

标签 flutter dart

我正在制作一个加载 CSV 并在屏幕上显示表格的应用程序,但加载函数在构建状态下被无限调用任何人都知道如何修复它我只想调用一次但我的代码调用了很多次次。

控制台截图如下: a busy cat

代码如下:

import 'package:flutter/material.dart';
import 'package:csv/csv.dart';
import 'dart:async' show Future;
import 'package:flutter/services.dart' show rootBundle;

class TableLayout extends StatefulWidget {
  @override
  _TableLayoutState createState() => _TableLayoutState();
}
class _TableLayoutState extends State<TableLayout> {

  List<List<dynamic>> data = [];

  loadAsset() async {
    final myData = await rootBundle.loadString("asset/dreamss.csv");
    List<List<dynamic>> csvTable = CsvToListConverter().convert(myData);

    return csvTable;
  }
  void load() async{
    var newdata = await loadAsset();
    setState(() {
      data = newdata;
    });
    print("am i still being called called ");
  }

  @override
  Widget build(BuildContext context) {

    load();

    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(title: Text("Apps"),),
        //floatingActionButton: FloatingActionButton( onPressed: load,child: Icon(Icons.refresh),),
        body: ListView(
          children: <Widget>[
            Container(margin: EdgeInsets.only(top: 20.0),),
        Table(
          border: TableBorder.all(width: 1.0,color: Colors.black),
          children: data.map((item){
            return TableRow(
              children: item.map((row){
                return Text(row.toString(),style: TextStyle(fontSize: 20.0,fontWeight: FontWeight.w900),);
              }).toList(),
            );
          }).toList(),
        ),
    ]),
    ));
  }
}

最佳答案

这是解决方案。

@override
void initState() {
  super.initState();
  load(); // use it here
}


@override
Widget build(BuildContext context) {
  return MaterialApp(...); // no need to call initState() here
}

关于在构建中无限调用 Flutter 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56312092/

相关文章:

firebase - Flutter ListView.builder 在滚动时结结巴巴并跳到顶部

firebase - getter 'document'在null上被调用。 Stream <QuerySnapshots>文档未返回

flutter - 在 Flutter 中 SliverAppBar 和 SliverList 之间添加空格

当 defaultRender 设置为非常基本的 ArcRendererConfig() 时,Flutter GoogleChart 饼图不呈现

javascript - var 与 dart 中其他更具体的类型之间的区别

android - 为什么在 Flutter 中,PlatformView 不能缩小到自己的大小?

json - 如何在 Flutter 中映射具有相同类型嵌套对象的 json?

dart - 有没有一种方法可以使用我的刷新指示器在错误快照之后刷新 future builder

regex - 正则表达式用于匹配和分隔字符串

xmlhttprequest - 从 Dart 客户端到本地 Dart docker 服务器的 HTTP 请求上出现“XMLHttpRequest 无法加载”错误