Size: a a a

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

2020 September 05

n

neikist in Dart & Flutter по-русски
Paul Naumenko
а у тебя походу запросы прямиком из UI делаются
Скорее всего, в 1с к бизнес логике в формах быстро привыкаешь, по себе знаю, переучивался
источник

PN

Paul Naumenko in Dart & Flutter по-русски
Павел Бабинцев
Вопрос не в пагинации, а в том, чтобы загруженный список хранить в памяти, подкачивать его по мере необъодимости, и выдавать порции для ListView
https://bloclibrary.dev/
изучи эту штуку
и почитай про сам подход
концепция простая, один раз поймёшь, и всё сразу станет проще
источник

PN

Paul Naumenko in Dart & Flutter по-русски
neikist
Скорее всего, в 1с к бизнес логике в формах быстро привыкаешь, по себе знаю, переучивался
может быть.
да и без 1С, какой ни будь курс посмотришь по флаттеру, а там с порога предлагают провайдером всё делать и запросы прямиком из UI слать, да щё стейтфул виджетами балуются
источник

EC

Evgeny Cherkasov in Dart & Flutter по-русски
Павел Бабинцев
Приветствую всех!
Делаю бесконечный скролл с загрузкой с сервера по API
Использую ListView+package:http/http.dart+dart:convert

Застрял с асинхронной загрузкой с сервера: у меня на каждый элемент происходит отдельный запрос, а надо чтобы данные получить пачкой и потом в ЛистВью эти данные использовать, при этом отрисовка должна ждать пока очередная пачка загружается.... В общем, всё стандартно, но просто не знаю как и на каких объектах в Flutter это делается...

Прошу подскажите где почитать как это правильно организуется, не могу найти инфу..

Делаю своё первое МП, не закидывайте, пожалуйста, тапками)
До этого более 10 лет писал на 1С, поэтому не сильно ориентируюсь в "нормальных" языках и платформах)
Я сделал ListUic виджет для подобной задачи. Посмотрите тут https://pub.dev/packages/uic#listuic, может подойдёт.
источник

PN

Paul Naumenko in Dart & Flutter по-русски
Evgeny Cherkasov
Я сделал ListUic виджет для подобной задачи. Посмотрите тут https://pub.dev/packages/uic#listuic, может подойдёт.
может и подойдёт, но блок всё равно стоит освоить)
источник

n

neikist in Dart & Flutter по-русски
Павел Бабинцев
Вопрос не в пагинации, а в том, чтобы загруженный список хранить в памяти, подкачивать его по мере необъодимости, и выдавать порции для ListView
Попробую объяснить на близких к 1с примерах. В 1с программист практически не может влиять на отображение, потому там описывать логику работы интерфейса и связанную бизнес логику в модуле формы более менее нормально. Но в разработке на более гибких фреймворках само отображение от логики принято отделять, потому код делится на компоненты в виде кода отвечающего за оторбажение, кода отвечающего за логику обработки действий пользователя и логики отображения (блок как раз, очень близко к "модулю формы"), кода отвечающего за доступ к данным (репозитории и подобное). Иногда бывает выделяют больше компонентов, например интеракторы, но поначалу и на простых проектах нафиг оно не надо
источник

ПБ

Павел Бабинцев... in Dart & Flutter по-русски
Paul Naumenko
вот так делать не надо
рискуешь лагающий Ui получить и спагетти-код вдобавок
Да, именно так)
Через FutureBuilder,
где во future:
return http.get('https://***.ru/***/api/pageMainProductsList?pageSize=10', ).then(_apiAnswerProductListJSON)
а в builder: return BoxPopularProductsListRow(_productsList[_indexList1], _productsList[_indexList2])

Понимаю что не надо так, но пока еще учусь)
источник

ПБ

Павел Бабинцев... in Dart & Flutter по-русски
Paul Naumenko
https://bloclibrary.dev/
изучи эту штуку
и почитай про сам подход
концепция простая, один раз поймёшь, и всё сразу станет проще
👌
источник

ПБ

Павел Бабинцев... in Dart & Flutter по-русски
Evgeny Cherkasov
Я сделал ListUic виджет для подобной задачи. Посмотрите тут https://pub.dev/packages/uic#listuic, может подойдёт.
Почитаю
источник

ПБ

Павел Бабинцев... in Dart & Flutter по-русски
neikist
Попробую объяснить на близких к 1с примерах. В 1с программист практически не может влиять на отображение, потому там описывать логику работы интерфейса и связанную бизнес логику в модуле формы более менее нормально. Но в разработке на более гибких фреймворках само отображение от логики принято отделять, потому код делится на компоненты в виде кода отвечающего за оторбажение, кода отвечающего за логику обработки действий пользователя и логики отображения (блок как раз, очень близко к "модулю формы"), кода отвечающего за доступ к данным (репозитории и подобное). Иногда бывает выделяют больше компонентов, например интеракторы, но поначалу и на простых проектах нафиг оно не надо
Спасибо, добрый человек!
источник

ПБ

Павел Бабинцев... in Dart & Flutter по-русски
Благодарю, коллеги!
Ушёл учить...)
источник

DG

Denis Glukhov in Dart & Flutter по-русски
Всем привет. Подскажите, как правильно обработать событие нажатия на определенную кнопку внутри Item ListView?
источник

PN

Paul Naumenko in Dart & Flutter по-русски
Denis Glukhov
Всем привет. Подскажите, как правильно обработать событие нажатия на определенную кнопку внутри Item ListView?
что значит "как правильно"?
на каком вы этапе на данный момент?
источник

DG

Denis Glukhov in Dart & Flutter по-русски
Paul Naumenko
что значит "как правильно"?
на каком вы этапе на данный момент?
вопрос в том, что этот клик нужно обрабатывать внутри объекта Item, или же как то можно обработать в виджете где строиться строиться список ListView
источник

PN

Paul Naumenko in Dart & Flutter по-русски
оберните ваш виджет в InkWell или более низкоуровневый GestureDetector
у обоих доступен onTap, например.
Первый даже визуально демонстрирует что вы как-то жестом взаимодействуете с виджетом
источник

PN

Paul Naumenko in Dart & Flutter по-русски
источник

PN

Paul Naumenko in Dart & Flutter по-русски
источник

DG

Denis Glukhov in Dart & Flutter по-русски
Paul Naumenko
оберните ваш виджет в InkWell или более низкоуровневый GestureDetector
у обоих доступен onTap, например.
Первый даже визуально демонстрирует что вы как-то жестом взаимодействуете с виджетом
спасибо
источник

SH

Sergey Hottabych in Dart & Flutter по-русски
Павел Бабинцев
Да, именно так)
Через FutureBuilder,
где во future:
return http.get('https://***.ru/***/api/pageMainProductsList?pageSize=10', ).then(_apiAnswerProductListJSON)
а в builder: return BoxPopularProductsListRow(_productsList[_indexList1], _productsList[_indexList2])

Понимаю что не надо так, но пока еще учусь)
В build-методе нельзя делать http-запросы.
При каждом ребилде виджета он будет срабатывать
источник

ПБ

Павел Бабинцев... in Dart & Flutter по-русски
Sergey Hottabych
В build-методе нельзя делать http-запросы.
При каждом ребилде виджета он будет срабатывать
Да, я понял что идёт что-то не так, и поэтому задал вопрос сюда)
источник