80 lines
2.6 KiB
Dart
80 lines
2.6 KiB
Dart
import 'package:auto_route/auto_route.dart';
|
|
import 'package:easy_localization/easy_localization.dart';
|
|
import 'package:flutter/material.dart';
|
|
import 'package:flutter_hooks/flutter_hooks.dart';
|
|
import 'package:hooks_riverpod/hooks_riverpod.dart';
|
|
import 'package:island/widgets/app_scaffold.dart';
|
|
import 'package:island/widgets/content/sheet.dart';
|
|
import 'package:island/widgets/post/post_list.dart';
|
|
import 'package:material_symbols_icons/symbols.dart';
|
|
|
|
@RoutePage()
|
|
class CreatorPostListScreen extends HookConsumerWidget {
|
|
final String pubName;
|
|
const CreatorPostListScreen({
|
|
super.key,
|
|
@PathParam('name') required this.pubName,
|
|
});
|
|
|
|
@override
|
|
Widget build(BuildContext context, WidgetRef ref) {
|
|
final refreshKey = useState(0);
|
|
|
|
void showCreatePostSheet() {
|
|
showModalBottomSheet(
|
|
context: context,
|
|
builder:
|
|
(context) => SheetScaffold(
|
|
titleText: 'create'.tr(),
|
|
child: Column(
|
|
children: [
|
|
ListTile(
|
|
leading: const Icon(Symbols.edit),
|
|
title: Text('postContent'.tr()),
|
|
subtitle: Text('Create a regular post'),
|
|
onTap: () async {
|
|
Navigator.pop(context);
|
|
final result = await context.router.pushPath(
|
|
'/posts/compose?type=0',
|
|
);
|
|
if (result == true) {
|
|
refreshKey.value++;
|
|
}
|
|
},
|
|
),
|
|
ListTile(
|
|
leading: const Icon(Symbols.article),
|
|
title: Text('Article'),
|
|
subtitle: Text('Create a detailed article'),
|
|
onTap: () async {
|
|
Navigator.pop(context);
|
|
final result = await context.router.pushPath(
|
|
'/posts/compose?type=1',
|
|
);
|
|
if (result == true) {
|
|
refreshKey.value++;
|
|
}
|
|
},
|
|
),
|
|
],
|
|
),
|
|
),
|
|
);
|
|
}
|
|
|
|
return AppScaffold(
|
|
appBar: AppBar(title: Text('posts').tr()),
|
|
body: CustomScrollView(
|
|
key: ValueKey(refreshKey.value),
|
|
slivers: [
|
|
SliverPostList(pubName: pubName, itemType: PostItemType.creator),
|
|
],
|
|
),
|
|
floatingActionButton: FloatingActionButton(
|
|
onPressed: showCreatePostSheet,
|
|
child: const Icon(Symbols.add),
|
|
),
|
|
);
|
|
}
|
|
}
|