import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; import 'package:test_sa/extensions/context_extension.dart'; import 'package:test_sa/extensions/widget_extensions.dart'; import 'package:test_sa/modules/alerts/alert_item_view.dart'; import 'package:test_sa/modules/alerts/alert_provider.dart'; import 'package:test_sa/new_views/common_widgets/default_app_bar.dart'; import 'package:test_sa/views/widgets/loaders/lazy_loading.dart'; import 'package:test_sa/views/widgets/loaders/no_data_found.dart'; class AlertsListPage extends StatefulWidget { const AlertsListPage({Key? key}) : super(key: key); @override State createState() => _AlertsListPageState(); } class _AlertsListPageState extends State { AlertProvider? _provider; @override Widget build(BuildContext context) { _provider = Provider.of(context); if (_provider!.items == null && !_provider!.isLoading) { WidgetsBinding.instance.addPostFrameCallback((_) { _provider!.reset(); _provider!.getAlerts(); }); } return Consumer(builder: (context, snapshot, _) { final list = snapshot.items ?? []; if (list.isEmpty && !snapshot.isLoading) { return NoDataFound(message: context.translation.noDataFound).center; } return LazyLoading( nextPage: snapshot.nextPage, onLazyLoad: () async { await snapshot.getAlerts(); }, child: ListView.separated( padding: const EdgeInsets.all(16), itemBuilder: (cxt, index) { if (index >= list.length) return const SizedBox(); return AlertItemView(alert: list[index]); }, separatorBuilder: (cxt, index) => const SizedBox(height: 12), itemCount: list.length, ), ); }); } }