import 'package:flutter/material.dart'; import 'package:fast_network_navigation/layout.dart'; import 'package:fast_network_navigation/structs/trip.dart'; class TripsOverview extends StatefulWidget { final Future> trips; const TripsOverview({ super.key, required this.trips, }); @override State createState() => _TripsOverviewState(); } class _TripsOverviewState extends State { // final Future> _trips = loadTrips(); Widget listBuild (BuildContext context, AsyncSnapshot> snapshot) { List children; if (snapshot.hasData) { children = List.generate(snapshot.data!.length, (index) { Trip trip = snapshot.data![index]; return ListTile( title: Text("Trip to ${trip.cityName}"), leading: Icon(Icons.pin_drop), onTap: () { Navigator.of(context).push( MaterialPageRoute( builder: (context) => BasePage(mainScreen: "map", trip: Future.value(trip)) ) ); }, ); }); } else if (snapshot.hasError) { children = [ const Icon( Icons.error_outline, color: Colors.red, size: 60, ), Padding( padding: const EdgeInsets.only(top: 16), child: Text('Error: ${snapshot.error}'), ), ]; } else { children = [Center(child: CircularProgressIndicator())]; } return ListView( children: children, ); } @override Widget build(BuildContext context) { return FutureBuilder( future: widget.trips, builder: listBuild, ); } }