@@ -17,7 +17,7 @@ import '../../dependency_injection.dart';
1717import '../account/user_session.dart' ;
1818import '../new_note/new_note.dart' ;
1919import '../components/controllers/tag_cloud_controller.dart' ;
20- import 'package:happy_notes/screens/components/shared_fab .dart' ;
20+ import 'package:happy_notes/screens/components/create_note_fab .dart' ;
2121import '../components/tappable_app_bar_title.dart' ;
2222
2323class HomePage extends StatefulWidget {
@@ -65,8 +65,9 @@ class HomePageState extends State<HomePage> with WidgetsBindingObserver {
6565 _handleAppResumed ();
6666 }
6767
68- _wasInBackground =
69- (state == AppLifecycleState .paused || state == AppLifecycleState .hidden || state == AppLifecycleState .inactive);
68+ _wasInBackground = (state == AppLifecycleState .paused ||
69+ state == AppLifecycleState .hidden ||
70+ state == AppLifecycleState .inactive);
7071 }
7172
7273 void _handleAppResumed () {
@@ -76,7 +77,9 @@ class HomePageState extends State<HomePage> with WidgetsBindingObserver {
7677 final notesProvider = Provider .of <NotesProvider >(context, listen: false );
7778
7879 // Auto-reload if logged in but notes list is empty (iOS Safari memory management fix)
79- if (authProvider.isAuthenticated && notesProvider.notes.isEmpty && ! notesProvider.isLoadingList) {
80+ if (authProvider.isAuthenticated &&
81+ notesProvider.notes.isEmpty &&
82+ ! notesProvider.isLoadingList) {
8083 notesProvider.loadPage (1 );
8184 }
8285 }
@@ -137,58 +140,49 @@ class HomePageState extends State<HomePage> with WidgetsBindingObserver {
137140 FloatingPagination (
138141 currentPage: notesProvider.currentPage,
139142 totalPages: notesProvider.totalPages,
140- navigateToPage: (pageNumber) => navigateToPage (pageNumber),
143+ navigateToPage: (pageNumber) =>
144+ navigateToPage (pageNumber),
141145 ),
142146 ],
143147 );
144148 },
145149 ),
146- Positioned (
147- right: 16 ,
148- bottom: 16 ,
149- child: Opacity (
150- opacity: 0.85 ,
151- child: SharedFab (
152- icon: Icons .edit_outlined,
150+ ],
151+ ),
152+ floatingActionButton: CreateNoteFAB (
153+ isPrivate: AppConfig .privateNoteOnlyIsEnabled,
154+ heroTag: 'fab_home' ,
155+ onPressed: () async {
156+ final scaffoldMessenger = ScaffoldMessenger .of (context);
157+ final provider = Provider .of <NotesProvider >(context, listen: false );
158+ final Note ? savedNote = await Navigator .push <Note >(
159+ context,
160+ MaterialPageRoute (
161+ builder: (context) => NewNote (
153162 isPrivate: AppConfig .privateNoteOnlyIsEnabled,
154- busy: false ,
155- mini: false ,
156- onPressed: () async {
157- final scaffoldMessenger = ScaffoldMessenger .of (context);
158- final provider = Provider .of <NotesProvider >(context, listen: false );
159- final Note ? savedNote = await Navigator .push <Note >(
160- context,
161- MaterialPageRoute (
162- builder: (context) => NewNote (
163- isPrivate: AppConfig .privateNoteOnlyIsEnabled,
164- ),
165- ),
166- );
167- if (! mounted) return ;
168- if (savedNote != null ) {
169- if (provider.currentPage == 1 ) {
170- if (_scrollController.hasClients && _scrollController.offset > 0 ) {
171- _scrollController.animateTo (
172- 0 ,
173- duration: const Duration (milliseconds: 300 ),
174- curve: Curves .easeInOut,
175- );
176- }
177- } else {
178- Util .showInfo (scaffoldMessenger, 'Note saved successfully.' );
179- }
180- }
181- },
182163 ),
183164 ),
184- ),
185- ],
165+ );
166+ if (! mounted) return ;
167+ if (savedNote != null ) {
168+ if (provider.currentPage == 1 ) {
169+ if (_scrollController.hasClients &&
170+ _scrollController.offset > 0 ) {
171+ _scrollController.animateTo (
172+ 0 ,
173+ duration: const Duration (milliseconds: 300 ),
174+ curve: Curves .easeInOut,
175+ );
176+ }
177+ } else {
178+ Util .showInfo (scaffoldMessenger, 'Note saved successfully.' );
179+ }
180+ }
181+ },
186182 ),
187183 );
188184 }
189185
190-
191-
192186 Widget _buildBody (NotesProvider notesProvider) {
193187 if (notesProvider.isLoadingList) {
194188 return const Center (child: CircularProgressIndicator ());
@@ -292,21 +286,25 @@ class HomePageState extends State<HomePage> with WidgetsBindingObserver {
292286 final saved = await Navigator .push <bool >(
293287 context,
294288 MaterialPageRoute (
295- builder: (context) => NoteDetail (note: note, enterEditing: note.userId == UserSession ().id),
289+ builder: (context) => NoteDetail (
290+ note: note,
291+ enterEditing: note.userId == UserSession ().id),
296292 ),
297293 );
298294 _handleEditResult (saved);
299295 },
300296 onDelete: (note) async {
301297 final result = await notesProvider.deleteNote (note.id);
302298 if (! result.isSuccess && mounted) {
303- Util .showError (ScaffoldMessenger .of (context), result.errorMessage! );
299+ Util .showError (
300+ ScaffoldMessenger .of (context), result.errorMessage! );
304301 }
305302 },
306303 ),
307304 noteCallbacks: NoteListCallbacks (
308305 onRefresh: refreshPage,
309- onTagTap: (note, tag) => NavigationHelper .onTagTap (context, note, tag),
306+ onTagTap: (note, tag) =>
307+ NavigationHelper .onTagTap (context, note, tag),
310308 onDateHeaderTap: (date) => Navigator .push (
311309 context,
312310 MaterialPageRoute (
@@ -315,7 +313,8 @@ class HomePageState extends State<HomePage> with WidgetsBindingObserver {
315313 ),
316314 ),
317315 config: const ListItemConfig (
318- showDate: false , // Don't show individual dates when showDateHeader is true
316+ showDate:
317+ false , // Don't show individual dates when showDateHeader is true
319318 showAuthor: false ,
320319 enableDismiss: true ,
321320 ),
0 commit comments