尝试调用Future Builder时,Flutter应用程序显示空白屏幕

时间:2019-10-13 05:59:09

标签: flutter dart future flutter-layout

我正在尝试使用具有的Future函数构建一个futureBuilder,该函数将通过包含SurveyName参数的对象列表传递,我正在尝试将SurveyName描述符显示在listView中,但注意到我得到了空白白屏既不显示容器,也不显示容器,该容器仅应显示一些基本的加载功能,也不显示getSurveys函数的信息。

我对飞镖和扑打都是陌生的,所以这可能只是一些基本的简单解决方法,但是任何信息都将有所帮助。打印中下面的getSurveys方法在打印中同时显示了两个名称,因此我知道该特定功能的信息是正确的,但是我想知道为什么它在futureBuilder中不起作用。

第1条和第2条打印语句正在运行,但是我注意到第3条打印语句并未运行,因此出于某些严重原因而未调用listView Builder,这可能是造成这种困境的原因,但我想知道为什么容器只是应该展示负载...也无法正常工作。输出低于此功能。

Future<List<Survey_List>> getSurveys() async{
  Map map = {
    'Type': "getSurveys"
  };
  var _list = [];
  List<Survey_List> surveys = [];
  getPost(map).then((Map value){
    _list.addAll(value["survey"]);

    for (int i = 0; i < _list.length; i++){
      Survey_List survey_list = Survey_List(surveyName: _list[i].toString() ,surveyDescription: "", surveyVersion: "");
      surveys.add(survey_list);
      print(survey_list.surveyName);
    }
  });

  return surveys;
}

输出为,如下所示:

I/flutter ( 2020): 2

I/flutter ( 2020): 1

I/flutter ( 2020): {"survey":["Survey","Surve3ww"]}

I/flutter ( 2020): Survey

I/flutter ( 2020): Surve3ww
import 'dart:convert';
import 'dart:io';
import 'package:flutter/cupertino.dart';
import 'package:flutter_application/Http.dart';
import 'Config.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';

class Survey_List extends StatefulWidget {
  String surveyName;
  String surveyDescription;
  String surveyVersion;

  Survey_List({
    this.surveyName,
    this.surveyDescription,
    this.surveyVersion,
    Key key,
  }) : super (key: key);
  @override
  _SurveyListState createState() => _SurveyListState();
}

class _SurveyListState extends State<Survey_List> {
  @override
  Widget build(BuildContext context) {
    return new Scaffold(
      appBar: new AppBar(
        title: new Text("Surveys"),
      ),
      body: new Container(
        child: new FutureBuilder <List<Survey_List>>(
          future: getSurveys(),
          builder: (BuildContext context, AsyncSnapshot snapshot) {
            List<Survey_List> surveys = snapshot.data;
            if (snapshot.hasData) {
              print(1);
              return new ListView.builder(
                itemCount: snapshot.data.length,
                itemBuilder: (BuildContext context, int index) {
                  print(3);
                  Survey_List survey_list = surveys[index];
                  print(survey_list.toString());
                  return new ListTile(
                    title: new Text(survey_list.surveyName)
                  );
                },
              );
            }
            else{
              print(2);
              return new Container(
                child: new Center(
                  child: new Text("Loading...")
                )
              );
            }
          },
        ),
      ),
    );
  }
}

0 个答案:

没有答案