improvements & bugfixes

This commit is contained in:
Myzel394 2022-08-17 13:34:42 +02:00
parent e38b00d2f2
commit 833d208041
2 changed files with 18 additions and 29 deletions

View File

@ -13,7 +13,9 @@ class TimelineModel extends PropertyChangeNotifier<String> {
TimelineModel({
required final List<Memory> memories,
}) : _timeline = mapFromMemoriesList(memories);
final int initialndex = 0,
}) : _timeline = mapFromMemoriesList(memories),
_currentIndex = initialndex;
RealtimeSubscription? _serverSubscription;

View File

@ -28,21 +28,8 @@ class TimelineScreen extends StatefulWidget {
}
class _TimelineScreenState extends State<TimelineScreen> with Loadable {
final pageController = PageController();
late final pageController;
late final TimelineModel timeline;
bool _ignorePageChanges = false;
Future<void> _goToPage(final int page) async {
_ignorePageChanges = true;
await pageController.animateToPage(
page,
duration: const Duration(milliseconds: 300),
curve: Curves.easeOutQuad,
);
_ignorePageChanges = false;
}
@override
initState() {
@ -50,7 +37,15 @@ class _TimelineScreenState extends State<TimelineScreen> with Loadable {
final memoriesModel = context.read<Memories>();
timeline = TimelineModel(memories: memoriesModel.memories);
timeline = TimelineModel(
memories: memoriesModel.memories,
);
final initialIndex = getIndexFromDate();
pageController = PageController(
initialPage: initialIndex,
);
timeline.setCurrentIndex(initialIndex);
memoriesModel.addListener(() {
timeline.refresh(memoriesModel.memories);
@ -59,17 +54,13 @@ class _TimelineScreenState extends State<TimelineScreen> with Loadable {
// Update page view
timeline.addListener(() async {
if (timeline.currentIndex != pageController.page) {
_goToPage(timeline.currentIndex);
await pageController.animateToPage(
timeline.currentIndex,
duration: const Duration(milliseconds: 300),
curve: Curves.easeOutQuad,
);
}
}, ['currentIndex']);
WidgetsBinding.instance.addPostFrameCallback((_) async {
final initialIndex = getIndexFromDate();
await _goToPage(initialIndex);
timeline.setCurrentIndex(initialIndex);
});
}
@override
@ -109,10 +100,6 @@ class _TimelineScreenState extends State<TimelineScreen> with Loadable {
scrollDirection: Axis.vertical,
itemCount: timeline.values.length,
onPageChanged: (newPage) {
if (_ignorePageChanges) {
return;
}
if (timeline.currentIndex != newPage) {
// User manually changed page
timeline.setCurrentIndex(newPage);