как исправить недостающее возвращение в streambuilder

#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:

Вы получаете сообщение об ошибке, потому что у вас нет «возврата по умолчанию». У вас есть возврат за два дела:

  1. snapshot.hasError
  2. 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}');  }  }),  ],  ), ),  

Это всего лишь пример кода, вы можете настроить его таким образом, чтобы он наилучшим образом соответствовал вашим потребностям