我正在尝试使用具有的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...")
)
);
}
},
),
),
);
}
}