Я пытаюсь создать объект futureBuilder с имеющейся у меня функцией Future, которая проходит через список объектов, содержащих параметр 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...")
)
);
}
},
),
),
);
}
}