Это большой нет.
Во-первых, нет ничего плохого в использовании нескольких StreamBuilder
, StreamBuilder
, которые помогут вам упростить использование Streams
, чтобы вы не испортили вещи их подписки ... как вы делали в initState()
.
Когда вы звоните listen()
на snapshots()
, как вы делали на initState()
, вы создали подписку, эта подписка должна быть отменена dispose()
, но вы не отменяете его, так что у вас происходит утечка памяти, StreamBuilder
спасет вас здесь, поскольку он управляет этим за вас.
Еще одна вещь, о которой следует помнить, - это то, что вы используете _leaseUnitPropertyUid
на build()
, но вы не проверяете, действительно ли _leaseUnitPropertyUid
. _leaseUnitPropertyUid
будет установлен только после того, как Firebase
snapshot()
Stream
испускает одно значение, а build()
может быть вызван до этого. Опять же, StreamBuilder
спас бы вас здесь, так же как вы могли бы проверить, выдало ли оно значение или нет.
Также вы жестко кодируете Firebase.instance
в своем коде, что очень затрудняет тестирование . Взгляните на Dependency Injection и попробуйте внедрить Firebase.instance
в свой класс, например, шаблон репозитория или что-то подобное, чтобы вы могли заменить Firebase.instace
на тестирование Mock и сделайте ваш код более тестируемым.