import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; import '../state/podcast_group.dart'; import '../state/subscribe_podcast.dart'; import '../state/refresh_podcast.dart'; import '../util/context_extension.dart'; class Import extends StatelessWidget { Widget importColumn(String text, BuildContext context) { return Container( color: context.primaryColorDark, child: Column( mainAxisAlignment: MainAxisAlignment.start, mainAxisSize: MainAxisSize.min, children: [ SizedBox(height: 2.0, child: LinearProgressIndicator()), Container( padding: EdgeInsets.symmetric(horizontal: 20.0), height: 20.0, alignment: Alignment.centerLeft, child: Text(text), ), ]), ); } @override Widget build(BuildContext context) { GroupList groupList = Provider.of(context, listen: false); return Column( children: [ Consumer( builder: (_, subscribeWorker, __) { SubscribeItem item = subscribeWorker.currentSubscribeItem; switch (item.subscribeState) { case SubscribeState.start: return importColumn("Subscribe ${item.title}", context); case SubscribeState.subscribe: groupList.subscribeNewPodcast(item.id); return importColumn("Fetch data ${item.title}", context); case SubscribeState.fetch: // groupList.updatePodcast(item.id); return importColumn("Subscribe success ${item.title}", context); case SubscribeState.exist: return importColumn( "Subscribe failed, podcast existed ${item.title}", context); case SubscribeState.error: return importColumn( "Subscribe failed, network error ${item.title}", context); default: return Center(); } }, ), Consumer( builder: (context, refreshWorker, child) { RefreshItem item = refreshWorker.currentRefreshItem; if (refreshWorker.complete) { groupList.updateGroups(); // audio.addNewEpisode('all'); } switch (item.refreshState) { case RefreshState.fetch: return importColumn("Update ${item.title}", context); case RefreshState.error: return importColumn("Update error ${item.title}", context); default: return Center(); } }, ) ], ); } }