Мне кажется, что будет эффективнее выгружать все сразу в память, а не ходить в БД за каждым элементом. Особенно, для больших списков.
Нашел такую реализацию: https://gist.github.com/errzey/1237932
После выгрузки всего списка из БД, он перекладывается в хеш-таблицу.
Как я понимаю, сложность этой операции будет О(n) — один цикл по всем записям.
Зато затем при отображении списка поиск каждого следующего элемента будет занимать О(1).
В целом, кажется, что этот подход может иметь место, особенно на больших списках, где весь этот оверхед не будет лишним.
Скажите, пожалуйста, рассматривался ли связный список для хранения данных? И если да, то почему не подошёл?
Он позволяет за константное время добавлять/перемещать/удалять элементы. Соответственно, объем данных, отправляемых на сервер тоже константное: не зависит от старой или новой позиций элемента.
Чтобы избежать утечек памяти, необходимо MyHomePage сделать StatefulWidget'ом, чтобы переопределить метод dispose с вызовом соответствующего метода объекта counterBloc.
Ctrl+Shift+T в хроме восстанавливает вкладку со всеми атрибутами (история, заполненная информация).
Но в остальном согласен — в интернете без блокировщика очень непросто для неподготовленного пользователя.
Спасибо за статью, какие плюсы и минусы по сравнению с monarchapp.io, который тоже недавно зарелизился?
Мне кажется, что будет эффективнее выгружать все сразу в память, а не ходить в БД за каждым элементом. Особенно, для больших списков.
Нашел такую реализацию:
https://gist.github.com/errzey/1237932
После выгрузки всего списка из БД, он перекладывается в хеш-таблицу.
Как я понимаю, сложность этой операции будет О(n) — один цикл по всем записям.
Зато затем при отображении списка поиск каждого следующего элемента будет занимать О(1).
В целом, кажется, что этот подход может иметь место, особенно на больших списках, где весь этот оверхед не будет лишним.
Скажите, пожалуйста, рассматривался ли связный список для хранения данных? И если да, то почему не подошёл?
Он позволяет за константное время добавлять/перемещать/удалять элементы. Соответственно, объем данных, отправляемых на сервер тоже константное: не зависит от старой или новой позиций элемента.
Поэтому, даже при использовании неродных виджетов приложение не будет вызывать отторжения и чувства чужеродности.
Но если требуется нативный вид для всех виджетов, то, действительно, нужно их явно указывать через if.
Чтобы избежать утечек памяти, необходимо MyHomePage сделать StatefulWidget'ом, чтобы переопределить метод dispose с вызовом соответствующего метода объекта counterBloc.
Но в остальном согласен — в интернете без блокировщика очень непросто для неподготовленного пользователя.