mirror of
https://github.com/Myzel394/quid_faciam_hodie.git
synced 2025-06-19 07:35:26 +02:00
improvements & bugfixes
This commit is contained in:
parent
e38b00d2f2
commit
833d208041
@ -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;
|
||||
|
||||
|
@ -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);
|
||||
|
Loading…
x
Reference in New Issue
Block a user