import 'dart:convert'; import 'package:flutter/material.dart'; import 'package:http/http.dart' as http; import '../config.dart'; class Artists extends StatefulWidget { @override _ArtistsWidgetState createState() => _ArtistsWidgetState(); } Future> fetchArtists() async { final response = await http.get(Uri.https(config['apiUrl'], '/artists')); if (response.statusCode == 200) { return List.from(jsonDecode(response.body)['artists']); } else { throw Exception('Failed to load artists'); } } class _ArtistsWidgetState extends State { Future> artists; @override void initState() { super.initState(); artists = fetchArtists(); } @override Widget build(BuildContext context) { return FutureBuilder>( future: artists, builder: (context, snapshot) { if (snapshot.hasData) { return ListView( padding: EdgeInsets.only(left: 8, right: 8), children: snapshot.data.map((artist) => Container( height: 32, color: Colors.white, child: Align( alignment: Alignment.centerLeft, child: Text(artist.length == 0 ? 'Unknown artist' : artist), ), )).toList(), ); } if (snapshot.hasError) { return Text("${snapshot.error}"); } return CircularProgressIndicator(); }, ); } }