✨ Tappable label tags
This commit is contained in:
parent
d1eb51c596
commit
594f57e0d3
@ -77,8 +77,11 @@ final _appRoutes = [
|
||||
GoRoute(
|
||||
path: '/search',
|
||||
name: 'postSearch',
|
||||
builder: (context, state) => const AppBackground(
|
||||
child: PostSearchScreen(),
|
||||
builder: (context, state) => AppBackground(
|
||||
child: PostSearchScreen(
|
||||
initialTags: state.uri.queryParameters['tags']?.split(','),
|
||||
initialCategories: state.uri.queryParameters['categories']?.split(','),
|
||||
),
|
||||
),
|
||||
),
|
||||
GoRoute(
|
||||
|
@ -13,7 +13,10 @@ import 'package:surface/widgets/post/post_tags_field.dart';
|
||||
import 'package:very_good_infinite_list/very_good_infinite_list.dart';
|
||||
|
||||
class PostSearchScreen extends StatefulWidget {
|
||||
const PostSearchScreen({super.key});
|
||||
final Iterable<String>? initialTags;
|
||||
final Iterable<String>? initialCategories;
|
||||
|
||||
const PostSearchScreen({super.key, this.initialTags, this.initialCategories});
|
||||
|
||||
@override
|
||||
State<PostSearchScreen> createState() => _PostSearchScreenState();
|
||||
@ -31,6 +34,16 @@ class _PostSearchScreenState extends State<PostSearchScreen> {
|
||||
String _searchTerm = '';
|
||||
Duration? _lastTook;
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
_searchTags.addAll(widget.initialTags ?? []);
|
||||
_searchCategories.addAll(widget.initialCategories ?? []);
|
||||
if (_searchTags.isNotEmpty || _searchCategories.isNotEmpty) {
|
||||
_fetchPosts();
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> _fetchPosts() async {
|
||||
if (_searchTerm.isEmpty && _searchCategories.isEmpty && _searchTags.isEmpty) return;
|
||||
if (_postCount != null && _posts.length >= _postCount!) return;
|
||||
|
@ -989,7 +989,14 @@ class _PostTagsList extends StatelessWidget {
|
||||
),
|
||||
],
|
||||
),
|
||||
onTap: () {},
|
||||
onTap: () {
|
||||
GoRouter.of(context).pushNamed(
|
||||
'postSearch',
|
||||
queryParameters: {
|
||||
'categories': ele.alias,
|
||||
},
|
||||
);
|
||||
},
|
||||
),
|
||||
)
|
||||
.toList(),
|
||||
@ -1008,7 +1015,14 @@ class _PostTagsList extends StatelessWidget {
|
||||
Text(ele.alias, style: GoogleFonts.robotoMono()),
|
||||
],
|
||||
),
|
||||
onTap: () {},
|
||||
onTap: () {
|
||||
GoRouter.of(context).pushNamed(
|
||||
'postSearch',
|
||||
queryParameters: {
|
||||
'tags': ele.alias,
|
||||
},
|
||||
);
|
||||
},
|
||||
),
|
||||
)
|
||||
.toList(),
|
||||
|
Loading…
Reference in New Issue
Block a user