Size: a a a

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

2021 April 04

AG

Artem Goryunov in Dart & Flutter по-русски
а если какой-то лист стримов и на новое сообщение просто сортировать его и как-то делать сет стейт на экране сообщений например?..
источник

AG

Artem Goryunov in Dart & Flutter по-русски
оно меньше кушать будет в теории или как?
источник

AG

Artem Goryunov in Dart & Flutter по-русски
что меньше жрет?
стрим стримов или на каждое сообщение сет стейт делать?
источник

ДЩ

Дмитрий Щербаков... in Dart & Flutter по-русски
ну если бы я делал это, то делал на блоке. и каждое новое сообщение было типа стейта апдейт саккес с id комнаты
источник

AG

Artem Goryunov in Dart & Flutter по-русски
Дмитрий Щербаков
ну если бы я делал это, то делал на блоке. и каждое новое сообщение было типа стейта апдейт саккес с id комнаты
эт как? в пару строк
источник

ДЩ

Дмитрий Щербаков... in Dart & Flutter по-русски
ну там не пару строк 😂
источник

AG

Artem Goryunov in Dart & Flutter по-русски
какой аналог у observable сейчас он деприкейтед вроде
источник

w

whoami in Dart & Flutter по-русски
Artem Goryunov
final Stream<List<Stream<Message>>> chanels;
вот такую структуру для сообщений не очень было-бы использовать, как думаете?
тип сообщения летят с id комнаты и их нужно как-то раскидать по раздельным чатам
Я такое делал, когда мне надо было с одного стрима (Websockets) делить на стримы - системные сообщения и сообщения в чате.
У меня репозиторий, в нем я объявил два стрим-контроллера

final _chatEventsController = StreamController<List<ChatMessage>>();
final _systemEventsController = StreamController<SystemMessage>();

Future<void> connect() async {
   WebsocketEventsDataSource source = await websocketEventsDataSource.connect();

   _eventsSubscribtion = source.events.listen((wsEvent) {
     final msg = MessageModelFactory.fromJson(jsonDecode(wsEvent));

     switch (msg.runtimeType) {
       case ChatMessageModel:
         {
           _chatEventsController.add(_addAndRotateChatMsgs(msg));
           return;
         }
       case SystemMessageModel:
         {
           _systemEventsController.add(msg);
           return;
         }
     }
   });
 }


собственно в методе connect подписываюсь на сообщения из ws и раскидываю их по стрим-контроллерам. В вашем случае наверно лучше как-то так же сделать
источник

AG

Artem Goryunov in Dart & Flutter по-русски
дададада
источник

AG

Artem Goryunov in Dart & Flutter по-русски
whoami
Я такое делал, когда мне надо было с одного стрима (Websockets) делить на стримы - системные сообщения и сообщения в чате.
У меня репозиторий, в нем я объявил два стрим-контроллера

final _chatEventsController = StreamController<List<ChatMessage>>();
final _systemEventsController = StreamController<SystemMessage>();

Future<void> connect() async {
   WebsocketEventsDataSource source = await websocketEventsDataSource.connect();

   _eventsSubscribtion = source.events.listen((wsEvent) {
     final msg = MessageModelFactory.fromJson(jsonDecode(wsEvent));

     switch (msg.runtimeType) {
       case ChatMessageModel:
         {
           _chatEventsController.add(_addAndRotateChatMsgs(msg));
           return;
         }
       case SystemMessageModel:
         {
           _systemEventsController.add(msg);
           return;
         }
     }
   });
 }


собственно в методе connect подписываюсь на сообщения из ws и раскидываю их по стрим-контроллерам. В вашем случае наверно лучше как-то так же сделать
спасибо
ну тип того я и спрашивал
какая практика лучше этого всего
а сортировку делал какую-то?
или со стороны клиента уже в контроллере оно?
источник

Сu

Семён undefined in Dart & Flutter по-русски
дададдадададада
источник

w

whoami in Dart & Flutter по-русски
в смысле - сортировку?
источник

AG

Artem Goryunov in Dart & Flutter по-русски
whoami
в смысле - сортировку?
ну тип по дате их по хорошему сортировать нужно или как
источник

AG

Artem Goryunov in Dart & Flutter по-русски
whoami
в смысле - сортировку?
addAndRotateChatMsgs(msg)
наверное
источник

w

whoami in Dart & Flutter по-русски
не, сортировку не делал, какая разница как приходят сообщения - раньше или позже, у меня приложение не для чата с указанием точного времени, а просто - "позырить видосик" и "потрындеть"
источник

AG

Artem Goryunov in Dart & Flutter по-русски
whoami
не, сортировку не делал, какая разница как приходят сообщения - раньше или позже, у меня приложение не для чата с указанием точного времени, а просто - "позырить видосик" и "потрындеть"
тип пришло сообщение
комната выше стала в списке
источник

w

whoami in Dart & Flutter по-русски
Artem Goryunov
addAndRotateChatMsgs(msg)
наверное
этот метод просто отсекает "устаревшие" сообщения, неоптимально сделан, поэтому не приведу
источник

ДЩ

Дмитрий Щербаков... in Dart & Flutter по-русски
ну сортировка это тупо клиент часть, какие с ней сложности то
источник

w

whoami in Dart & Flutter по-русски
Artem Goryunov
тип пришло сообщение
комната выше стала в списке
а не, я такое не делал)
источник

AG

Artem Goryunov in Dart & Flutter по-русски
спасибо, Андрей
ну сортировку сам уж смогу написать)
источник