45 lines
1.5 KiB
Dart
45 lines
1.5 KiB
Dart
import 'package:flutter/cupertino.dart';
|
|
import 'package:flutter/material.dart';
|
|
import 'package:reverse_nn/enums/schedule.dart';
|
|
import 'package:reverse_nn/utils/scheduler.dart';
|
|
import 'package:reverse_nn/widgets/loader_widget.dart';
|
|
import 'package:reverse_nn/widgets/schedule_element_widget.dart';
|
|
|
|
class ScheduleWidget extends StatefulWidget {
|
|
const ScheduleWidget({super.key});
|
|
|
|
@override
|
|
State<ScheduleWidget> createState() => _ScheduleWidgetState();
|
|
}
|
|
|
|
class _ScheduleWidgetState extends State<ScheduleWidget> {
|
|
bool _loading = true;
|
|
List<ScheduleElement> _schedule = List.empty();
|
|
|
|
void loadScheduleData() async {
|
|
setState(() { _loading = true; });
|
|
setState(() { _schedule = Scheduler.getScheduleList(); });
|
|
setState(() { _loading = false; });
|
|
}
|
|
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
loadScheduleData();
|
|
|
|
Future.delayed(const Duration(seconds: 15), () => loadScheduleData());
|
|
|
|
return _loading && _schedule.isNotEmpty ? const LoaderWidget() : ListView.separated(
|
|
scrollDirection: Axis.vertical,
|
|
shrinkWrap: true,
|
|
padding: const EdgeInsets.all(10),
|
|
separatorBuilder: (BuildContext context, int index) {
|
|
return SizedBox(height: index == 0 ? 10 : 4);
|
|
},
|
|
itemCount: _schedule.length,
|
|
itemBuilder: (ctx, i) {
|
|
if(i == 0) { return CurrentReversWidget(scheduleElement: _schedule[i]); }
|
|
return ScheduledReversWidget(scheduleElement: _schedule[i]);
|
|
},
|
|
);
|
|
}
|
|
} |