pageview backwarding bug fixed
This commit is contained in:
parent
085ee82c4b
commit
e5bae19f14
|
|
@ -44,13 +44,16 @@ class _NewsDetailsState extends State<NewsDetails> {
|
||||||
builder: (context, state) => Stack(
|
builder: (context, state) => Stack(
|
||||||
children: [
|
children: [
|
||||||
if (state.news.isNotEmpty)
|
if (state.news.isNotEmpty)
|
||||||
DidvanPageView(
|
IgnorePointer(
|
||||||
isRadar: false,
|
ignoring: state.isFetchingNewItem,
|
||||||
initialIndex: state.initialIndex,
|
child: DidvanPageView(
|
||||||
onPageChanged: _onPageChnaged,
|
isRadar: false,
|
||||||
scrollController: _scrollController,
|
initialIndex: state.initialIndex,
|
||||||
items: state.news,
|
onPageChanged: _onPageChnaged,
|
||||||
currentIndex: state.currentIndex,
|
scrollController: _scrollController,
|
||||||
|
items: state.news,
|
||||||
|
currentIndex: state.currentIndex,
|
||||||
|
),
|
||||||
),
|
),
|
||||||
if (state.news.isNotEmpty)
|
if (state.news.isNotEmpty)
|
||||||
Positioned(
|
Positioned(
|
||||||
|
|
|
||||||
|
|
@ -15,6 +15,7 @@ class NewsDetailsState extends CoreProvier {
|
||||||
late final NewsRequestArgs args;
|
late final NewsRequestArgs args;
|
||||||
late Timer _trackingTimer;
|
late Timer _trackingTimer;
|
||||||
int _trackingTimerCounter = 0;
|
int _trackingTimerCounter = 0;
|
||||||
|
bool isFetchingNewItem = false;
|
||||||
final List<int> relatedQueue = [];
|
final List<int> relatedQueue = [];
|
||||||
|
|
||||||
int _currentIndex = 0;
|
int _currentIndex = 0;
|
||||||
|
|
@ -25,6 +26,9 @@ class NewsDetailsState extends CoreProvier {
|
||||||
Future<void> getNewsDetails(int id, {bool? isForward}) async {
|
Future<void> getNewsDetails(int id, {bool? isForward}) async {
|
||||||
if (isForward == null) {
|
if (isForward == null) {
|
||||||
appState = AppState.busy;
|
appState = AppState.busy;
|
||||||
|
} else {
|
||||||
|
isFetchingNewItem = true;
|
||||||
|
notifyListeners();
|
||||||
}
|
}
|
||||||
final service = RequestService(RequestHelper.newsDetails(id, args));
|
final service = RequestService(RequestHelper.newsDetails(id, args));
|
||||||
await service.httpGet();
|
await service.httpGet();
|
||||||
|
|
@ -67,6 +71,7 @@ class NewsDetailsState extends CoreProvier {
|
||||||
}
|
}
|
||||||
_currentIndex--;
|
_currentIndex--;
|
||||||
}
|
}
|
||||||
|
isFetchingNewItem = false;
|
||||||
appState = AppState.idle;
|
appState = AppState.idle;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
@ -97,8 +102,11 @@ class NewsDetailsState extends CoreProvier {
|
||||||
Future<void> getRelatedContents() async {
|
Future<void> getRelatedContents() async {
|
||||||
if (currentNews.relatedContents.isNotEmpty) return;
|
if (currentNews.relatedContents.isNotEmpty) return;
|
||||||
relatedQueue.add(currentNews.id);
|
relatedQueue.add(currentNews.id);
|
||||||
final service = RequestService(
|
final service = RequestService(RequestHelper.tag(
|
||||||
RequestHelper.tag(currentNews.tags.map((tag) => tag.id).toList()));
|
ids: currentNews.tags.map((tag) => tag.id).toList(),
|
||||||
|
itemId: currentNews.id,
|
||||||
|
type: 'news',
|
||||||
|
));
|
||||||
await service.httpGet();
|
await service.httpGet();
|
||||||
if (service.isSuccess) {
|
if (service.isSuccess) {
|
||||||
final relateds = service.result['contents'];
|
final relateds = service.result['contents'];
|
||||||
|
|
|
||||||
|
|
@ -44,13 +44,16 @@ class _RadarDetailsState extends State<RadarDetails> {
|
||||||
builder: (context, state) => Stack(
|
builder: (context, state) => Stack(
|
||||||
children: [
|
children: [
|
||||||
if (state.radars.isNotEmpty)
|
if (state.radars.isNotEmpty)
|
||||||
DidvanPageView(
|
IgnorePointer(
|
||||||
isRadar: true,
|
ignoring: state.isFetchingNewItem,
|
||||||
initialIndex: state.initialIndex,
|
child: DidvanPageView(
|
||||||
onPageChanged: _onPageChanged,
|
isRadar: true,
|
||||||
scrollController: _scrollController,
|
initialIndex: state.initialIndex,
|
||||||
items: state.radars,
|
onPageChanged: _onPageChanged,
|
||||||
currentIndex: state.currentIndex,
|
scrollController: _scrollController,
|
||||||
|
items: state.radars,
|
||||||
|
currentIndex: state.currentIndex,
|
||||||
|
),
|
||||||
),
|
),
|
||||||
if (state.radars.isNotEmpty)
|
if (state.radars.isNotEmpty)
|
||||||
Positioned(
|
Positioned(
|
||||||
|
|
|
||||||
|
|
@ -15,6 +15,7 @@ class RadarDetailsState extends CoreProvier {
|
||||||
int _trackingTimerCounter = 0;
|
int _trackingTimerCounter = 0;
|
||||||
late final int initialIndex;
|
late final int initialIndex;
|
||||||
late final RadarRequestArgs args;
|
late final RadarRequestArgs args;
|
||||||
|
bool isFetchingNewItem = false;
|
||||||
final List<int> relatedQueue = [];
|
final List<int> relatedQueue = [];
|
||||||
|
|
||||||
int _currentIndex = 0;
|
int _currentIndex = 0;
|
||||||
|
|
@ -31,6 +32,9 @@ class RadarDetailsState extends CoreProvier {
|
||||||
Future<void> getRadarDetails(int id, {bool? isForward}) async {
|
Future<void> getRadarDetails(int id, {bool? isForward}) async {
|
||||||
if (isForward == null) {
|
if (isForward == null) {
|
||||||
appState = AppState.busy;
|
appState = AppState.busy;
|
||||||
|
} else {
|
||||||
|
isFetchingNewItem = true;
|
||||||
|
notifyListeners();
|
||||||
}
|
}
|
||||||
final service = RequestService(RequestHelper.radarDetails(id, args));
|
final service = RequestService(RequestHelper.radarDetails(id, args));
|
||||||
await service.httpGet();
|
await service.httpGet();
|
||||||
|
|
@ -76,6 +80,7 @@ class RadarDetailsState extends CoreProvier {
|
||||||
}
|
}
|
||||||
_currentIndex--;
|
_currentIndex--;
|
||||||
}
|
}
|
||||||
|
isFetchingNewItem = false;
|
||||||
appState = AppState.idle;
|
appState = AppState.idle;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
@ -88,8 +93,11 @@ class RadarDetailsState extends CoreProvier {
|
||||||
Future<void> getRelatedContents() async {
|
Future<void> getRelatedContents() async {
|
||||||
if (currentRadar.relatedContents.isNotEmpty) return;
|
if (currentRadar.relatedContents.isNotEmpty) return;
|
||||||
relatedQueue.add(currentRadar.id);
|
relatedQueue.add(currentRadar.id);
|
||||||
final service = RequestService(
|
final service = RequestService(RequestHelper.tag(
|
||||||
RequestHelper.tag(currentRadar.tags.map((tag) => tag.id).toList()));
|
ids: currentRadar.tags.map((tag) => tag.id).toList(),
|
||||||
|
itemId: currentRadar.id,
|
||||||
|
type: 'news',
|
||||||
|
));
|
||||||
await service.httpGet();
|
await service.httpGet();
|
||||||
if (service.isSuccess) {
|
if (service.isSuccess) {
|
||||||
final relateds = service.result['contents'];
|
final relateds = service.result['contents'];
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue