import 'package:flutter/material.dart'; import 'package:anyway/layout.dart'; import 'package:anyway/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: FutureBuilder( future: trip.cityName, builder: (BuildContext context, AsyncSnapshot snapshot) { if (snapshot.hasData) { return Text("Trip to ${snapshot.data}"); } else if (snapshot.hasError) { return Text("Error: ${snapshot.error}"); } else { return const Text("Trip to ..."); } }, ), leading: Icon(Icons.pin_drop), onTap: () { Navigator.of(context).push( MaterialPageRoute( builder: (context) => BasePage(mainScreen: "map", trip: 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, ); } }