Можно ли использовать цикл for внутри Streambuilder? - PullRequest
0 голосов
/ 03 мая 2019

Я пытаюсь использовать streambuilder для извлечения некоторых данных из облачного хранилища и возврата столбца, используя эти данные, проблема в том, что когда я пытаюсь подключить цикл for к сборщику (как показано в блоке кода), он подсказывает мне, что функция построителя вернула ноль, чего не происходит при удалении цикла for.

Дело в том, что мне нужно использовать цикл for (или аналогичный) для достижения того, что мне нужно, потому что я использую данные по парам (как показано в блоке кода), первый контейнер использует снимок данных i а второй использует снимок данных i+1. Тогда для следующей итерации i будет 2, поэтому цикл for отлично подходит для этой работы.

Я также предоставляю вам трассировку стека. Заранее спасибо.

Container(
                        height: MediaQuery.of(context).size.height * 0.35,
                        child: StreamBuilder(
                          stream: Firestore.instance.collection('XXXXX').document('XXXXXXXXX').collection('XXXXXX').snapshots(),
                          builder: (context, snapshot) {
                            if(!snapshot.hasData) return 
                            Center(
                              child: Text('No documents to be shown')
                            );
                            final int largoDocumentos = snapshot.data.documents.length;
                            for(var i = 0; i > largoDocumentos; i = i + 2) {
                              return Column(  
                                children: <Widget>[
                                  Container(
                                    height: 130,
                                    child: Row(
                                        mainAxisAlignment: MainAxisAlignment.spaceBetween,
                                        children: <Widget>[
                                          Material(
                                            color: Colors.blueGrey[50],
                                            child: InkWell(
                                              borderRadius: BorderRadius.circular(28.0),
                                              onTap: () {

                                              },
                                              child: Container(
                                                width: MediaQuery.of(context).size.width * 0.4,
                                                child: Column(
                                                  mainAxisAlignment: MainAxisAlignment.spaceBetween,
                                                  children: <Widget>[
                                                    Text(snapshot.data.documents[i]['XXXXX'].toUpperCase(),
                                                        textAlign: TextAlign.center, 
                                                        style: TextStyle( 
                                                            fontSize: 18,
                                                            fontFamily: 'Montserrat',
                                                            fontWeight: FontWeight.bold,
                                                            color: Colors.grey)
                                                        ),
                                                      RadialProgress(0, 65.0, 20.0),
                                                  ],
                                                ),
                                              ),
                                            ),
                                          ),
                                          Material(
                                            color: Colors.blueGrey[50],
                                            child: InkWell(
                                              borderRadius: BorderRadius.circular(28.0),
                                              onTap: () {
                                              },
                                              child: Container(
                                                width: MediaQuery.of(context).size.width * 0.4,
                                                child: Column(
                                                  mainAxisAlignment: MainAxisAlignment.spaceBetween,
                                                  children: <Widget>[
                                                    Text(snapshot.data.documents[i+1]['XXXXX'].toUpperCase(),
                                                        textAlign: TextAlign.center, 
                                                        style: TextStyle( 
                                                            fontSize: 18,
                                                            fontFamily: 'Montserrat',
                                                            fontWeight: FontWeight.bold,
                                                            color: Colors.grey)
                                                        ),
                                                      RadialProgress(30, 65.0, 20.0),
                                                  ],
                                                ),
                                              ),
                                            ),
                                          ),
                                        ],
                                      ),
                                    ),
                                  SizedBox(height: 25,),
                                ],
                              );
                            }
                          },
                        ),
                      ),
I/flutter ( 5721): ══╡ EXCEPTION CAUGHT BY WIDGETS LIBRARY ╞═══════════════════════════════════════════════════════════
I/flutter ( 5721): The following assertion was thrown building StreamBuilder<QuerySnapshot>(dirty, state:
I/flutter ( 5721): _StreamBuilderBaseState<QuerySnapshot, AsyncSnapshot<QuerySnapshot>>#bc925):
I/flutter ( 5721): A build function returned null.
I/flutter ( 5721): The offending widget is: StreamBuilder<QuerySnapshot>
I/flutter ( 5721): Build functions must never return null. To return an empty space that causes the building widget to
I/flutter ( 5721): fill available room, return "new Container()". To return an empty space that takes as little room as
I/flutter ( 5721): possible, return "new Container(width: 0.0, height: 0.0)".
I/flutter ( 5721):
I/flutter ( 5721): When the exception was thrown, this was the stack:
I/flutter ( 5721): #0      debugWidgetBuilderValue.<anonymous closure> (package:flutter/src/widgets/debug.dart:270:7)
I/flutter ( 5721): #1      debugWidgetBuilderValue (package:flutter/src/widgets/debug.dart:287:4)
I/flutter ( 5721): #2      ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3742:7)
I/flutter ( 5721): #3      Element.rebuild (package:flutter/src/widgets/framework.dart:3564:5)
I/flutter ( 5721): #4      BuildOwner.buildScope (package:flutter/src/widgets/framework.dart:2277:33)
I/flutter ( 5721): #5      _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding&PaintingBinding&SemanticsBinding&RendererBinding&WidgetsBinding.drawFrame (package:flutter/src/widgets/binding.dart:700:20)
I/flutter ( 5721): #6      _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding&PaintingBinding&SemanticsBinding&RendererBinding._handlePersistentFrameCallback (package:flutter/src/rendering/binding.dart:275:5)
I/flutter ( 5721): #7      _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:990:15)
I/flutter ( 5721): #8      _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding.handleDrawFrame (package:flutter/src/scheduler/binding.dart:930:9)
I/flutter ( 5721): #9      _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding._handleDrawFrame (package:flutter/src/scheduler/binding.dart:842:5)
I/flutter ( 5721): #13     _invoke (dart:ui/hooks.dart:209:10)
I/flutter ( 5721): #14     _drawFrame (dart:ui/hooks.dart:168:3)
I/flutter ( 5721): (elided 3 frames from package dart:async)
I/flutter ( 5721): ════════════════════════════════════════════════════════════════════════════════════════════════════
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...