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 { final bool fromBottomBar; const AlertsListPage({Key? key, this.fromBottomBar = false}) : 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!.getAlerts(); }); } return Scaffold( appBar: DefaultAppBar(title: "Alerts", showBackButton: !widget.fromBottomBar), body: 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, ), ); }), ); } }