Flutter 颤振/飞镖当我尝试从internet导入数据时,它不会';别装了

Flutter 颤振/飞镖当我尝试从internet导入数据时,它不会';别装了,flutter,dart,snapshot,jsondecoder,flutter-futurebuilder,Flutter,Dart,Snapshot,Jsondecoder,Flutter Futurebuilder,我是新来的飞镖手。。。 我试图使用json.decode从http导入数据,但它始终为null,显示“正在加载…”。我正在使用FutureBuilder!我已经找到了解决办法,但没有找到。我用它来模拟。 希望有人能帮忙!:) 对数据进行fet时出错 使用try-catch查看错误。您将看到此错误 类型“int”不是类型“String”的子类型 下面是如何修复的 Future<List<Technician>> getTechies() async { try {

我是新来的飞镖手。。。 我试图使用json.decode从http导入数据,但它始终为null,显示“正在加载…”。我正在使用FutureBuilder!我已经找到了解决办法,但没有找到。我用它来模拟。 希望有人能帮忙!:)


对数据进行fet时出错

使用try-catch查看错误。您将看到此错误

类型“int”不是类型“String”的子类型

下面是如何修复的

Future<List<Technician>> getTechies() async {
    try {
      var data = await http.get("https://jsonplaceholder.typicode.com/posts");
      var jsonData = json.decode(data.body);

      List<Technician> techies = [];

      for (var u in jsonData) {
        Technician myTechy = Technician(u["userId"], u["id"], u["tittle"], u["body"]);

        techies.add(myTechy);
      }

      return techies;
    } catch (e) {
      print(e);
    }
  }
如果您不想更改
技师
课程。在你的循环中这样做

for (var u in jsonData) {
        Technician myTechy = Technician(u["userId"].toString(), u["id"].toString(), u["tittle"], u["body"]);

        techies.add(myTechy);
      }
然后将list.builder更改为

return ListView.builder(
                      itemCount: snapshot.data.length,
                      itemBuilder: (BuildContext context, int index) {
                        return ListTile(
                          title: Text(snapshot.data[index].userId.toString()),
                          subtitle: Text(snapshot.data[index].id.toString()),
                        );
                      },
                    );
class Technician {
  final int userId;
  final int id;
  final String tittle;
  final String body;

  Technician(this.userId, this.id, this.tittle, this.body);
}
for (var u in jsonData) {
        Technician myTechy = Technician(u["userId"].toString(), u["id"].toString(), u["tittle"], u["body"]);

        techies.add(myTechy);
      }
return ListView.builder(
                      itemCount: snapshot.data.length,
                      itemBuilder: (BuildContext context, int index) {
                        return ListTile(
                          title: Text(snapshot.data[index].userId.toString()),
                          subtitle: Text(snapshot.data[index].id.toString()),
                        );
                      },
                    );