简体   繁体   English

snapshot.data 不是 null 但不显示数据

[英]snapshot.data is not null but doesnt show data

My snapshot.data is not null .我的snapshot.data不是 null When i print the response it shows the data.当我打印响应时,它会显示数据。 But in the flutter app it doesnt show the data.但在 flutter 应用程序中,它不显示数据。 It just appears a spinning wheel from the return new CircularProgressIndicator();它只是从return new CircularProgressIndicator(); 中出现一个旋转的轮子; . . Please help!!!请帮忙!!!

import 'package:flutter/material.dart';
import 'package:notenverwaltung/UI/Fach/fach_page.dart';
import 'package:notenverwaltung/models/global.dart';
import 'dart:async';
import 'package:http/http.dart' as http;
import 'dart:convert';

//import 'package:plant_app/screens/details/details_screen.dart';
class SemesterModel {
  SemesterModel({this.id, this.name, this.durchschnitt, this.jahr, this.notiz});
  final int id;
  String name;
  double durchschnitt;
  String jahr;
  String notiz;
}

class Semester extends StatelessWidget {
  //SemesterModel model;
  static const _semesterUrl = 'http://10.0.2.2:8888/semester';
  static final _headers = {'Content-Type': 'application/json'};

  const Semester({
    Key key,
  }) : super(key: key);

  Future<List<SemesterModel>> getSemester() async {
    final response = await http.get(_semesterUrl);
    //print(response.body);
    if (response.statusCode == 200) {
      List responseJson = json.decode(response.body.toString());
      List<SemesterModel> semesterList = createSemesterList(responseJson);
      print(semesterList);
      for (int i = 0; i < semesterList.length; i++) {
        print(semesterList[i].id);
        print(semesterList[i].name);
        print(semesterList[i].durchschnitt);
        print(semesterList[i].jahr);
        print(semesterList[i].notiz);
      }

      return semesterList;
    } else {
      throw Exception('Failed to load note');
    }
  }

  List<SemesterModel> createSemesterList(List data) {
    List<SemesterModel> list = new List();
    //print(data);

    for (int i = 0; i < data.length; i++) {
      int id = data[i]["id"];
      String name = data[i]["name"];
      double durchschnitt = data[i]["durchschnitt"];
      String jahr = data[i]["jahr"];
      String notiz = data[i]["notiz"];
      SemesterModel semesterObject = new SemesterModel(
          id: id,
          name: name,
          durchschnitt: durchschnitt,
          jahr: jahr,
          notiz: notiz);
      list.add(semesterObject);
    }
    return list;
  }

  @override
  Widget build(BuildContext context) {

    return SingleChildScrollView(
        scrollDirection: Axis.horizontal,
        child: new FutureBuilder(
          future: getSemester(),
          builder: (context, snapshot) {
            if (snapshot.data == null) {
              return Container(
                child: Container(
                  child: Text("Loading..."),
                ),
              );
            } else {
              print(snapshot.data);
              Expanded(
                  child: new ListView.builder(
                      itemCount: snapshot.data.length,
                      itemBuilder: (context, index) {
                        return new Column(
                            crossAxisAlignment: CrossAxisAlignment.start,
                            children: <Widget>[
                              SemesterCard(
                                semesterName: snapshot.data[index].name,
                                year: snapshot.data[index].jahr,
                                semesterAvg: snapshot.data[index].durchschnitt,
                                press: () {
                                  Navigator.push(
                                    context,
                                    MaterialPageRoute(
                                      //DetailsScreen()
                                      builder: (context) => FachScreen(),
                                    ),
                                  );
                                },
                              ),
                            ]);
                      }));
            }
            // }
            // By default, show a loading spinner
            return new CircularProgressIndicator();
          },
        ));
  }
}

SemesterCard Class:学期卡 Class:

class SemesterCard extends StatelessWidget {
  const SemesterCard({
    Key key,
    this.semesterName,
    this.year,
    this.semesterAvg,
    this.press,
  }) : super(key: key);

  final String semesterName, year;
  final double semesterAvg;
  final Function press;

  @override
  Widget build(BuildContext context) {
    Size size = MediaQuery.of(context).size;
    return Container(
      margin: EdgeInsets.only(
        left: kDefaultPadding,
        top: kDefaultPadding / 2,
        bottom: kDefaultPadding / 2,
      ),
      width: size.width * 0.9,
      child: Column(
        children: <Widget>[
          GestureDetector(
            onTap: press,
            child: Container(
              padding: EdgeInsets.all(kDefaultPadding / 2),
              decoration: BoxDecoration(
                color: Colors.white,
                borderRadius: BorderRadius.only(
                  bottomLeft: Radius.circular(10),
                  bottomRight: Radius.circular(10),
                  topLeft: Radius.circular(10),
                  topRight: Radius.circular(10),
                ),
                boxShadow: [
                  BoxShadow(
                    offset: Offset(0, 10),
                    blurRadius: 50,
                    color: kPrimaryColor.withOpacity(0.23),
                  ),
                ],
              ),
              child: Row(
                children: <Widget>[
                  RichText(
                    text: TextSpan(
                      children: [
                        TextSpan(
                            text: "$semesterName\n".toUpperCase(),
                            style: Theme.of(context).textTheme.button),
                        TextSpan(
                          text: "$year".toUpperCase(),
                          style: TextStyle(
                            color: kPrimaryColor.withOpacity(0.5),
                          ),
                        ),
                      ],
                    ),
                  ),
                  Spacer(),
                  Text('$semesterAvg',
                      style: Theme.of(context).textTheme.button.copyWith(
                            color: ((this.semesterAvg < 4.0)
                                ? kTextRed
                                : (this.semesterAvg < 5.0 &&
                                        this.semesterAvg > 4.0)
                                    ? kTextYellow
                                    : kTextGreen),
                          ))
                ],
              ),
            ),
          )
        ],
      ),
    );
  }
}

Debug console: I/flutter ( 1965): [Instance of 'SemesterModel', Instance of 'SemesterModel', Instance of 'SemesterModel', Instance of 'SemesterModel']调试控制台: I/flutter ( 1965): [Instance of 'SemesterModel', Instance of 'SemesterModel', Instance of 'SemesterModel', Instance of 'SemesterModel']

Flutter App screenshot: enter image description here Flutter 应用截图:在此处输入图片描述

Hi i think you need to remove the return CircularProgressBar and add return before Expanded嗨,我认为您需要删除 return CircularProgressBar 并在 Expanded 之前添加 return

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM