import 'package:flutter/material.dart'; import 'package:raid_manager/api/request.dart'; import 'package:raid_manager/types/disk.dart'; import 'package:raid_manager/utils/file_formatter.dart'; class DiskPage extends StatefulWidget { const DiskPage({Key? key}) : super(key: key); @override State createState() => _DiskPageState(); } class _DiskPageState extends State { Future> fetchDisks() async { return (await getJson('/api/disks') as List) .map((e) => Disk.fromJson(e)) .toList(growable: false); } late final myFetch = fetchDisks(); @override Widget build(BuildContext context) { return FutureBuilder( future: myFetch, builder: (context, snapshot) { if (snapshot.hasData) { final data = snapshot.data!; return ListView.builder( itemCount: data.length, itemBuilder: (context, idx) { return ListTile( title: Text( data[idx].name, style: Theme.of(context).textTheme.headlineMedium, ), subtitle: Text( data[idx].size.readableFileSize(), style: Theme.of(context).textTheme.labelMedium, ), onTap: () {}, ); }, ); } else if (snapshot.hasError) { return const Text("errored"); } else { return const Text("loading..."); } }, ); } }