#flutter
Вопрос:
У меня есть простой код с использованием построителя потоков, но я продолжаю получать недостающие результаты. И у меня есть два возврата в моем коде, как показано ниже:
Expanded( flex: 1, child: Column( children: [ const Text('Temperature:'), StreamBuilderlt;Listlt;intgt;gt;( stream: stream, builder: (BuildContext context, AsyncSnapshotlt;Listlt;intgt;gt; snapshot) { if (snapshot.hasError) { return Text('Error: ${snapshot.error}'); } else if (snapshot.connectionState == ConnectionState.active) { // geting data from bluetooth temperature = _dataParser(snapshot.data); if (temperature != "nan") { return Text(temperature); } } }), ], ), ),
Комментарии:
1. Вставьте полные коды, это непосредственный код в
build
методе.
Ответ №1:
Вы получаете сообщение об ошибке, потому что у вас нет «возврата по умолчанию». У вас есть возврат за два дела:
snapshot.hasError
snapshot.connectionState == ConnectionState.active
Но если оба условия ложны — ваш код вернет значение null.
Скорректируйте свой код следующим образом:
Expanded( flex: 1, child: Column( children: [ const Text('Temperature:'), StreamBuilderlt;Listlt;intgt;gt;( stream: stream, builder: (BuildContext context, AsyncSnapshotlt;Listlt;intgt;gt; snapshot) { if (snapshot.connectionState == ConnectionState.waiting) { return CircularProgressIndicator(); } else if (snapshot.connectionState == ConnectionState.active || snapshot.connectionState == ConnectionState.done) { if (snapshot.hasError) { return const Text('Error'); } if (snapshot.hasData) { temperature = _dataParser(snapshot.data); if (temperature == "nan") { return Text("Wrong temperature"); } return Text(temperature); } else { return const Text('Empty data'); } } else { return Text('State: ${snapshot.connectionState}'); } }), ], ), ),
Это всего лишь пример кода, вы можете настроить его таким образом, чтобы он наилучшим образом соответствовал вашим потребностям