74 lines
2.2 KiB
Dart
74 lines
2.2 KiB
Dart
import 'package:flutter/material.dart';
|
|
import '../create_post_screen.dart';
|
|
import '../../services/post_service.dart';
|
|
import '../../widgets/posts_list.dart';
|
|
|
|
class FeedPage extends StatefulWidget {
|
|
@override
|
|
_FeedPageState createState() => _FeedPageState();
|
|
}
|
|
|
|
class _FeedPageState extends State<FeedPage> {
|
|
final GlobalKey<PostsListState> _postsListKey = GlobalKey<PostsListState>();
|
|
|
|
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
return PopScope(
|
|
canPop: false, // Prevent back navigation from feed page
|
|
onPopInvoked: (bool didPop) {
|
|
// Prevent any pop behavior, including iOS back gesture
|
|
if (!didPop) {
|
|
// Do nothing - stay on feed page
|
|
}
|
|
},
|
|
child: Scaffold(
|
|
appBar: AppBar(
|
|
title: Text('Feed', style: TextStyle(fontWeight: FontWeight.w600)),
|
|
backgroundColor: Colors.white,
|
|
foregroundColor: Color(0xFF6A4C93),
|
|
elevation: 0,
|
|
bottom: PreferredSize(
|
|
preferredSize: Size.fromHeight(1),
|
|
child: Container(height: 1, color: Colors.grey[200]),
|
|
),
|
|
automaticallyImplyLeading: false,
|
|
actions: [
|
|
IconButton(
|
|
onPressed: () => _postsListKey.currentState?.refreshPosts(),
|
|
icon: Icon(Icons.refresh),
|
|
tooltip: 'Refresh',
|
|
),
|
|
],
|
|
),
|
|
body: PostsList(
|
|
key: _postsListKey,
|
|
fetchPosts: ({bool forceRefresh = false}) => PostService.getAllPosts(forceRefresh: forceRefresh),
|
|
emptyStateTitle: 'Nothing here..',
|
|
emptyStateSubtitle: 'Create the first post!',
|
|
showRefreshIndicator: true,
|
|
),
|
|
floatingActionButton: FloatingActionButton(
|
|
onPressed: _navigateToCreatePost,
|
|
backgroundColor: Color(0xFF6A4C93),
|
|
child: Icon(Icons.edit, color: Colors.white),
|
|
),
|
|
),
|
|
);
|
|
}
|
|
|
|
|
|
Future<void> _navigateToCreatePost() async {
|
|
final result = await Navigator.push(
|
|
context,
|
|
MaterialPageRoute(builder: (context) => CreatePostScreen()),
|
|
);
|
|
|
|
// If post was created successfully, refresh the feed
|
|
if (result == true) {
|
|
_postsListKey.currentState?.refreshPosts();
|
|
}
|
|
}
|
|
}
|
|
|