mirror of
https://github.com/Myzel394/quid_faciam_hodie.git
synced 2025-06-19 15:45:26 +02:00
improvements & bugfixes
This commit is contained in:
parent
e38b00d2f2
commit
833d208041
@ -13,7 +13,9 @@ class TimelineModel extends PropertyChangeNotifier<String> {
|
|||||||
|
|
||||||
TimelineModel({
|
TimelineModel({
|
||||||
required final List<Memory> memories,
|
required final List<Memory> memories,
|
||||||
}) : _timeline = mapFromMemoriesList(memories);
|
final int initialndex = 0,
|
||||||
|
}) : _timeline = mapFromMemoriesList(memories),
|
||||||
|
_currentIndex = initialndex;
|
||||||
|
|
||||||
RealtimeSubscription? _serverSubscription;
|
RealtimeSubscription? _serverSubscription;
|
||||||
|
|
||||||
|
@ -28,21 +28,8 @@ class TimelineScreen extends StatefulWidget {
|
|||||||
}
|
}
|
||||||
|
|
||||||
class _TimelineScreenState extends State<TimelineScreen> with Loadable {
|
class _TimelineScreenState extends State<TimelineScreen> with Loadable {
|
||||||
final pageController = PageController();
|
late final pageController;
|
||||||
late final TimelineModel timeline;
|
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
|
@override
|
||||||
initState() {
|
initState() {
|
||||||
@ -50,7 +37,15 @@ class _TimelineScreenState extends State<TimelineScreen> with Loadable {
|
|||||||
|
|
||||||
final memoriesModel = context.read<Memories>();
|
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(() {
|
memoriesModel.addListener(() {
|
||||||
timeline.refresh(memoriesModel.memories);
|
timeline.refresh(memoriesModel.memories);
|
||||||
@ -59,17 +54,13 @@ class _TimelineScreenState extends State<TimelineScreen> with Loadable {
|
|||||||
// Update page view
|
// Update page view
|
||||||
timeline.addListener(() async {
|
timeline.addListener(() async {
|
||||||
if (timeline.currentIndex != pageController.page) {
|
if (timeline.currentIndex != pageController.page) {
|
||||||
_goToPage(timeline.currentIndex);
|
await pageController.animateToPage(
|
||||||
|
timeline.currentIndex,
|
||||||
|
duration: const Duration(milliseconds: 300),
|
||||||
|
curve: Curves.easeOutQuad,
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}, ['currentIndex']);
|
}, ['currentIndex']);
|
||||||
|
|
||||||
WidgetsBinding.instance.addPostFrameCallback((_) async {
|
|
||||||
final initialIndex = getIndexFromDate();
|
|
||||||
|
|
||||||
await _goToPage(initialIndex);
|
|
||||||
|
|
||||||
timeline.setCurrentIndex(initialIndex);
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
@ -109,10 +100,6 @@ class _TimelineScreenState extends State<TimelineScreen> with Loadable {
|
|||||||
scrollDirection: Axis.vertical,
|
scrollDirection: Axis.vertical,
|
||||||
itemCount: timeline.values.length,
|
itemCount: timeline.values.length,
|
||||||
onPageChanged: (newPage) {
|
onPageChanged: (newPage) {
|
||||||
if (_ignorePageChanges) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (timeline.currentIndex != newPage) {
|
if (timeline.currentIndex != newPage) {
|
||||||
// User manually changed page
|
// User manually changed page
|
||||||
timeline.setCurrentIndex(newPage);
|
timeline.setCurrentIndex(newPage);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user