Size: a a a

Dart & Flutter по-русски

2020 March 27

DS

Daniil S in Dart & Flutter по-русски
Денис
а чем вас не устраивает widget<-bloc<-usecase<-repository?
норм схема, только вот блок тут излишний, можно просто данные получить обратившись к функции(бизнесс-модель), а не в стриме их прокидывать. Можно завести стейт и хранить где-нибудь подписавшись на его изменения. Если нужны стримбилдеры и тд
источник

DS

Daniil S in Dart & Flutter по-русски
блок - 1 стрим, зачастую нужно стримов больше
источник

DS

Daniil S in Dart & Flutter по-русски
по этому когда это так - короче написать 3 метода в презентере, а не 3 блока писать
источник

Д

Денис in Dart & Flutter по-русски
Daniil S
норм схема, только вот блок тут излишний, можно просто данные получить обратившись к функции(бизнесс-модель), а не в стриме их прокидывать. Можно завести стейт и хранить где-нибудь подписавшись на его изменения. Если нужны стримбилдеры и тд
ну если нужен другой стрим это уже другой блок не?) все же просто я не пишу блоки они сами генерятся)) мне проще написать 1-2 евента 3-4 стейта и один mapEventToState
источник

А

Андрей in Dart & Flutter по-русски
ещё такой вопрос: сейчас ко всему этому делу писал тест на получение новостей, и поймал себя на мысли что тесты для datasource, repository и usecase получились одинаковыми за исключением вызова конечных функций, я что-то делаю не так или это допустимо?)
источник

Д

Денис in Dart & Flutter по-русски
да и блоки нужно изначально писать так чтобы они цепляли целый аспект твоей программы)
источник

Д

Денис in Dart & Flutter по-русски
Андрей
ещё такой вопрос: сейчас ко всему этому делу писал тест на получение новостей, и поймал себя на мысли что тесты для datasource, repository и usecase получились одинаковыми за исключением вызова конечных функций, я что-то делаю не так или это допустимо?)
если тесты на типизацию и проверку ошибок то да, в принципе ты  mock  делаешь одинаковый почти)
источник

А

Андрей in Dart & Flutter по-русски
ладно, ещё один вопрос) сколько типов ошибок можно выделять? я планирую выдавать пользователю в конечном итоге либо ошибку сети - невозможно соединиться, либо ошибку получения данных и соответственно, у пользователя будет 2 типа сообщений, хотя может произойти, например, ошибка парсинга json или преобразования объектов, т.е. грубо говоря будут выкидываться и отлавливаться DioError и Exception
источник

DS

Daniil S in Dart & Flutter по-русски
Андрей
ладно, ещё один вопрос) сколько типов ошибок можно выделять? я планирую выдавать пользователю в конечном итоге либо ошибку сети - невозможно соединиться, либо ошибку получения данных и соответственно, у пользователя будет 2 типа сообщений, хотя может произойти, например, ошибка парсинга json или преобразования объектов, т.е. грубо говоря будут выкидываться и отлавливаться DioError и Exception
if (statusCode >= 200 && statusCode < 300) return response;
   if (statusCode == 401) throw HttpUnauthorizedException();
   if (statusCode >= 400 && statusCode < 500) throw HttpClientException();
   if (statusCode >= 500 && statusCode < 600) throw HttpServerException();
   throw HttpUnknownException();
источник

DS

Daniil S in Dart & Flutter по-русски
это как минимум
источник

DS

Daniil S in Dart & Flutter по-русски
бизнесовые ошибки еще нужно обрабатывать
источник

А

Андрей in Dart & Flutter по-русски
Daniil S
бизнесовые ошибки еще нужно обрабатывать
например?
источник

DS

Daniil S in Dart & Flutter по-русски
Андрей
например?
Надо заполнить все поля при регистрации  к примеру
источник

DS

Daniil S in Dart & Flutter по-русски
ну и тд и тп
источник

А

Андрей in Dart & Flutter по-русски
Daniil S
это как минимум
ну, я думаю, вполне тогда правильно у меня получается, т.е. авторизации нет, а ошибка клиента - это связь с сетью, например, ошибку сервера я тоже выделяю
источник

DS

Daniil S in Dart & Flutter по-русски
функция которая выполняется успешно в соответсвии с каким-либо правилами, иначе - эксепщн
источник

А

Андрей in Dart & Flutter по-русски
да да, именно так)
источник

А

Андрей in Dart & Flutter по-русски
спасибо всем за ответы)
источник

DS

Daniil S in Dart & Flutter по-русски
Андрей
спасибо всем за ответы)
источник

А

Андрей in Dart & Flutter по-русски
блин, ещё вопрос созрел: список загруженных новостей где хранить? в блоке листом или в репозитории? или вообще в bloc state и каждый раз копировать? но в последнем случае если state изменится список загруженных новостей слетит либо передавать его же во все остальные стейты
просто функционал реализовал, работает как надо, но вот с точки зрения структуры интересно как правильнее
источник