relatica/lib/screens/user_posts_screen.dart

70 wiersze
2.2 KiB
Dart

import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import '../controls/standard_appbar.dart';
import '../controls/timeline/timeline_panel.dart';
import '../globals.dart';
import '../models/TimelineIdentifiers.dart';
import '../routes.dart';
import '../services/network_status_service.dart';
import '../services/timeline_manager.dart';
class UserPostsScreen extends StatelessWidget {
final String userId;
const UserPostsScreen({super.key, required this.userId});
@override
Widget build(BuildContext context) {
final nss = getIt<NetworkStatusService>();
final manager = context.watch<TimelineManager>();
final timeline = TimelineIdentifiers.profile(userId);
return Scaffold(
appBar: StandardAppBar.build(
context,
'User Posts',
actions: [
ValueListenableBuilder(
valueListenable: nss.timelineLoadingStatus,
builder: (context2, executing, _) {
if (executing) {
final theme = Theme.of(context);
final size = theme.appBarTheme.actionsIconTheme?.size ??
theme.iconTheme.size ??
24;
return Center(
child: SizedBox(
width: size,
height: size,
child: CircularProgressIndicator(
color: Theme.of(context).canvasColor,
),
),
);
}
return IconButton(
onPressed: () async => await manager.updateTimeline(
timeline, TimelineRefreshType.refresh),
icon: Icon(
Icons.refresh,
));
}),
IconButton(
onPressed: () {
Navigator.of(context).popUntil((route) {
return route.settings.name == ScreenPaths.timelines;
});
},
icon: const Icon(Icons.home),
),
],
),
body: Center(
child: TimelinePanel(
timeline: timeline,
),
),
);
}
}