1
0
mirror of https://github.com/stonega/tsacdop synced 2025-02-18 04:20:37 +01:00

Minor change.

This commit is contained in:
stonegate 2020-08-16 16:05:18 +08:00
parent 017e15b129
commit 626763850b
6 changed files with 143 additions and 119 deletions

View File

@ -1,5 +1,4 @@
import 'dart:developer' as developer;
import 'dart:io';
import 'package:flutter/material.dart';
import 'package:flutter/rendering.dart';
@ -75,7 +74,6 @@ class _EpisodeDetailState extends State<EpisodeDetail> {
super.initState();
_showMenu = true;
_showTitle = false;
//_getSDescription(widget.episodeItem.enclosureUrl);
_controller = ScrollController();
_controller.addListener(_scrollListener);
}
@ -220,7 +218,7 @@ class _EpisodeDetailState extends State<EpisodeDetail> {
color: Colors.cyan[300],
borderRadius: BorderRadius.all(
Radius.circular(16.0))),
height: 32.0,
height: 28.0,
margin: EdgeInsets.only(right: 10.0),
padding:
EdgeInsets.symmetric(horizontal: 10.0),
@ -236,7 +234,7 @@ class _EpisodeDetailState extends State<EpisodeDetail> {
color: Colors.lightBlue[300],
borderRadius: BorderRadius.all(
Radius.circular(16.0))),
height: 32.0,
height: 28.0,
margin: EdgeInsets.only(right: 10.0),
padding: EdgeInsets.symmetric(horizontal: 10.0),
alignment: Alignment.center,
@ -253,13 +251,18 @@ class _EpisodeDetailState extends State<EpisodeDetail> {
if (snapshot.hasData &&
snapshot.data.seekValue < 0.9 &&
snapshot.data.seconds > 10) {
return OutlineButton(
return ButtonTheme(
height: 28,
padding:
EdgeInsets.symmetric(horizontal: 0),
child: OutlineButton(
shape: RoundedRectangleBorder(
borderRadius:
BorderRadius.circular(100.0),
side: BorderSide(
color: context.accentColor)),
highlightedBorderColor: Colors.green[700],
highlightedBorderColor:
Colors.green[700],
onPressed: () => audio.episodeLoad(
widget.episodeItem,
startPosition:
@ -280,6 +283,7 @@ class _EpisodeDetailState extends State<EpisodeDetail> {
Text(snapshot.data.seconds.toTime),
],
),
),
);
} else {
return Center();

View File

@ -1,5 +1,3 @@
import 'dart:io';
import 'package:flutter/material.dart';
import 'package:flutter_downloader/flutter_downloader.dart';
import 'package:provider/provider.dart';

View File

@ -1,5 +1,4 @@
import 'dart:async';
import 'dart:io';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';

View File

@ -24,7 +24,8 @@ class PlayedHistory extends StatefulWidget {
class _PlayedHistoryState extends State<PlayedHistory>
with SingleTickerProviderStateMixin {
Future<List<PlayHistory>> getPlayHistory(int top) async {
/// Get play history.
Future<List<PlayHistory>> _getPlayHistory(int top) async {
var dbHelper = DBHelper();
List<PlayHistory> playHistory;
playHistory = await dbHelper.getPlayHistory(top);
@ -34,16 +35,24 @@ class _PlayedHistoryState extends State<PlayedHistory>
return playHistory;
}
bool _loadMore = false;
_loadMoreData() async {
// await Future.delayed(Duration(seconds: 3));
if (mounted) {
setState(() {
_top = _top + 100;
_loadMore = true;
});
}
await Future.delayed(Duration(milliseconds: 500));
if (mounted) {
setState(() {
_top = _top + 10;
_loadMore = false;
});
}
}
int _top = 100;
int _top = 10;
Future<List<SubHistory>> getSubHistory() async {
var dbHelper = DBHelper();
@ -177,23 +186,34 @@ class _PlayedHistoryState extends State<PlayedHistory>
},
body: TabBarView(controller: _controller, children: <Widget>[
FutureBuilder<List<PlayHistory>>(
future: getPlayHistory(_top),
future: _getPlayHistory(_top),
builder: (context, snapshot) {
var _width = MediaQuery.of(context).size.width;
var width = MediaQuery.of(context).size.width;
return snapshot.hasData
? NotificationListener<ScrollNotification>(
onNotification: (scrollInfo) {
if (scrollInfo.metrics.pixels ==
scrollInfo.metrics.maxScrollExtent &&
snapshot.data.length == _top) _loadMoreData();
snapshot.data.length == _top) {
if (!_loadMore) {
_loadMoreData();
}
}
return true;
},
child: ListView.builder(
//shrinkWrap: true,
scrollDirection: Axis.vertical,
itemCount: snapshot.data.length,
itemCount: snapshot.data.length + 1,
itemBuilder: (context, index) {
var seekValue = snapshot.data[index].seekValue;
if (index == snapshot.data.length) {
return SizedBox(
height: 2,
child: _loadMore
? LinearProgressIndicator()
: Center());
} else {
var seekValue =
snapshot.data[index].seekValue;
var seconds = snapshot.data[index].seconds;
return Container(
padding:
@ -209,14 +229,16 @@ class _PlayedHistoryState extends State<PlayedHistory>
CrossAxisAlignment.start,
children: <Widget>[
Text(
DateFormat.yMd().add_jm().format(
snapshot
DateFormat.yMd()
.add_jm()
.format(snapshot
.data[index].playdate),
style: TextStyle(
color: context.textColor
.withOpacity(0.8),
fontSize: 15,
fontStyle: FontStyle.italic),
fontStyle:
FontStyle.italic),
),
Text(
snapshot.data[index].title,
@ -236,13 +258,13 @@ class _PlayedHistoryState extends State<PlayedHistory>
decoration: BoxDecoration(
border: Border(
bottom: BorderSide(
color:
Colors.grey[400],
color: Colors
.grey[400],
width: 2.0))),
width: _width * seekValue <
(_width - 120)
? _width * seekValue
: _width - 120,
width: width * seekValue <
(width - 120)
? width * seekValue
: width - 120,
),
Padding(
padding: EdgeInsets.symmetric(
@ -255,7 +277,8 @@ class _PlayedHistoryState extends State<PlayedHistory>
color: context.accentColor,
borderRadius:
BorderRadius.all(
Radius.circular(10))),
Radius.circular(
10))),
padding: EdgeInsets.all(2),
child: Text(
seconds == 0 && seekValue == 1
@ -271,6 +294,7 @@ class _PlayedHistoryState extends State<PlayedHistory>
],
),
);
}
}),
)
: Center(

View File

@ -25,7 +25,7 @@ class PlayHistory {
EpisodeBrief _episode;
EpisodeBrief get episode => _episode;
getEpisode() async {
Future<void> getEpisode() async {
_episode = await _dbHelper.getRssItemWithUrl(url);
}
}

View File

@ -1,9 +1,8 @@
import 'dart:io';
import 'dart:math' as math;
import 'package:flutter/material.dart';
import 'package:tsacdop/type/episodebrief.dart';
import '../type/episodebrief.dart';
import 'episodegrid.dart';
import 'extension_helper.dart';