Я пытаюсь использовать 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): ════════════════════════════════════════════════════════════════════════════════════════════════════