Рубрика #СегодняВПроекте

Джекпот Flutter-разработчика: данные в реальном времени 🎉

Сегодня я решил задачу, которая часто встречается в разработке приложений: отобразить список событий в реальном времени.

Условия:

1. Если есть ошибка — пользователь должен это видеть.

2. Если данных ещё нет — показываем индикатор загрузки.

3. Если событий нет, вместо пустого списка выводим сообщение.

4. Даты отображаются в формате dd.MM.yyyy, чтобы всё было понятно и аккуратно.

Вот кусок кода, который справляется с этой задачей:

import 'package:intl/intl.dart';  
  
StreamBuilder<List<Event>>(  
  stream: eventStream,  
  builder: (context, snapshot) {  
    if (snapshot.hasError) {  
      return Center(child: Text('Ошибка: ${snapshot.error}'));  
    }  
    if (!snapshot.hasData) {  
      return Center(child: CircularProgressIndicator());  
    }  
  
    final events = snapshot.data!;  
    if (events.isEmpty) {  
      return Center(child: Text('Событий нет'));  
    }  
  
    return ListView.builder(  
      itemCount: events.length,  
      itemBuilder: (context, index) {  
        final event = events[index];  
        return ListTile(  
          title: Text(event.title),  
          subtitle: Text(DateFormat('dd.MM.yyyy').format(event.date)),  
        );  
      },  
    );  
  },  
);  

Особенности:

Использовал intl для форматирования даты, чтобы сделать её понятной для пользователя.

StreamBuilder автоматически обновляет интерфейс при изменении данных, что идеально для списков событий.

Итог: теперь наш проект может динамически подгружать данные, корректно обрабатывать ошибки и показывать пользователю только актуальную информацию. Балдеж😎

Если ты тоже хочешь улучшить свои навыки во Flutter, присоединяйся к моему каналу. Делюсь своим опытом, кодом и полезными фишками каждый день! (Ну стараюсь)

🔗 https://t.me/dev_road #FlutterDev #КодКаждыйДень #StreamBuilder