tsacdop-podcast-app-android/lib/home/appbar/importompl.dart

73 lines
2.6 KiB
Dart

import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import '../../class/podcast_group.dart';
import '../../class/subscribe_podcast.dart';
import '../../class/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: <Widget>[
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<GroupList>(context, listen: false);
return Column(
children: <Widget>[
Consumer<SubscribeWorker>(
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<RefreshWorker>(
builder: (context, refreshWorker, child) {
RefreshItem item = refreshWorker.currentRefreshItem;
if (refreshWorker.complete) groupList.updateGroups();
switch (item.refreshState) {
case RefreshState.fetch:
return importColumn("Fetch data ${item.title}", context);
case RefreshState.error:
return importColumn("Update error ${item.title}", context);
default:
return Center();
}
},
)
],
);
}
}