Что я делаю, так это выбираю список мультфильмов и показываю их по GridView.Ниже код извлекает данные
Future<void> _getWebtoonData() async {
var response;
if(_daysReceivedResponse[_pressedButtonDayIndex]){
response = _daysResponse[_pressedButtonDayIndex];
} else {
response= await http.get('https://comic.naver.com/webtoon/weekdayList.nhn?week='+_currentWebtoonAddress);
_daysReceivedResponse[_pressedButtonDayIndex] = true;
_daysResponse[_pressedButtonDayIndex] = response;
}
dom.Document document = parser.parse(response.body);
final e1 = document.querySelectorAll('.img_list .thumb');
final e2 = document.querySelectorAll('.img_list .desc');
final e3 = document.querySelectorAll('.img_list .rating_type');
List<List<String>> infoCollection = List<List<String>>();
List<String> info = List<String>();
for(int i=0; i<e1.length; i++){
info.add(e1[i].getElementsByTagName('img')[0].attributes['src']);
info.add(e1[i].getElementsByTagName('a')[0].attributes['title']);
info.add(e2[i].getElementsByTagName('a')[0].innerHtml);
info.add(e3[i].getElementsByTagName('strong')[0].innerHtml);
infoCollection.add(info);
}
_controller.sink.add(infoCollection);
}
И я показываю эти изображения, названия, исполнителей и оценку по GridView, как показано ниже
Widget _getWebtoonGridView() {
return StreamBuilder(
stream: _controller.stream.asBroadcastStream(),
builder: (BuildContext context, AsyncSnapshot<List> snapshot){
if(snapshot.hasError)
print(snapshot.error);
else if(snapshot.hasData){
return GridView.count(
crossAxisCount: 3,
childAspectRatio: 0.6,
children: List.generate(snapshot.data.length, (index){
return _getWebtoonInfo(index, snapshot.data[index]);
}),
);
}
else if(snapshot.connectionState != ConnectionState.done)
return Center(child: CircularProgressIndicator());
},
);
}
Но ошибка «Поток уже прослушан»происходит постоянно, в чем проблема с моим StreamController ??
Как я могу это исправить?
StackTrace
I / флаттер (21411): ══╡ ИСКЛЮЧЕНИЕ, ПРОВЕДЕННОЕ БИБЛИОТЕКОЙ ВИДЖЕТОВ════════════════ I / flutter (21411): было сгенерировано следующее StateError, строение расширено (flex: 1): I / flutter (21411): плохое состояние: поток уже былслушал.I / flutter (21411): I / flutter (21411): когда было сгенерировано исключение, это был стек: I / flutter (21411): # 4
_StreamBuilderBaseState._subscribe (package: flutter / src / widgets / async.dart: 135: 37) I / flutter (21411): # 5 _StreamBuilderBaseState.initState (package: flutter / src / widgets / async.dart: 109: 5) I / flutter (21411): # 6
StatefulElement._firstBuild (пакет: flutter / src / widgets / framework.dart: 3830: 58) I / flutter (21411): # 7 ComponentElement.mount (пакет: flutter / src / widgets / framework.dart: 3696: 5) I / flutter(21411):
8 Element.inflateWidget (пакет: flutter / src / widgets / framework.dart: 2950: 14) I / flutter
(21411): # 9 Element.updateChild (пакет: flutter / src / widgets / framework.dart: 2753: 12)
Переменная StreamController
StreamController<List<List<String>>> _controller = StreamController<List<List<String>>>.broadcast();