intermediate

This commit is contained in:
Fabian Freund
2024-12-12 09:44:33 +01:00
parent 0710116feb
commit 6b2ae28828
108 changed files with 5531 additions and 2265 deletions
+37 -3
View File
@@ -8,8 +8,9 @@ import 'package:lensai/features/bangs/presentation/screens/search.dart';
import 'package:lensai/features/chat_archive/presentation/screens/detail.dart';
import 'package:lensai/features/chat_archive/presentation/screens/list.dart';
import 'package:lensai/features/chat_archive/presentation/screens/search.dart';
import 'package:lensai/features/geckoview/features/browser/screens/browser.dart';
import 'package:lensai/features/geckoview/features/browser/presentation/screens/browser.dart';
import 'package:lensai/features/geckoview/features/tabs/presentation/screens/container_list.dart';
import 'package:lensai/features/search/presentation/screens/search.dart';
import 'package:lensai/features/settings/presentation/screens/settings.dart';
part 'routes.g.dart';
@@ -22,13 +23,17 @@ part 'routes.g.dart';
name: 'AboutRoute',
path: 'about',
),
TypedGoRoute<SearchRoute>(
name: 'SearchRoute',
path: 'search/:searchText',
),
TypedGoRoute<BangCategoriesRoute>(
name: 'BangRoute',
path: 'bangs',
routes: [
TypedGoRoute<BangSearchRoute>(
name: 'BangSearchRoute',
path: 'search',
path: 'search/:searchText',
),
TypedGoRoute<BangCategoryRoute>(
name: 'BangCategoryRoute',
@@ -62,6 +67,24 @@ class AboutRoute extends GoRouteData {
}
}
class SearchRoute extends GoRouteData {
static const String emptySearchText = ' ';
//This should be nullable but isnt allowed by go_router
final String searchText;
const SearchRoute({this.searchText = SearchRoute.emptySearchText});
@override
Widget build(BuildContext context, GoRouterState state) {
return SearchScreen(
initialSearchText: (searchText.isEmpty || searchText == emptySearchText)
? null
: searchText,
);
}
}
class BangCategoriesRoute extends GoRouteData {
@override
Widget build(BuildContext context, GoRouterState state) {
@@ -96,9 +119,20 @@ class BangSubCategoryRoute extends GoRouteData {
}
class BangSearchRoute extends GoRouteData {
static const String emptySearchText = ' ';
//This should be nullable but isnt allowed by go_router
final String searchText;
const BangSearchRoute({this.searchText = BangSearchRoute.emptySearchText});
@override
Widget build(BuildContext context, GoRouterState state) {
return const BangSearchScreen();
return BangSearchScreen(
initialSearchText: (searchText.isEmpty || searchText == emptySearchText)
? null
: searchText,
);
}
}
+31 -3
View File
@@ -22,13 +22,18 @@ RouteBase get $browserRoute => GoRouteData.$route(
name: 'AboutRoute',
factory: $AboutRouteExtension._fromState,
),
GoRouteData.$route(
path: 'search/:searchText',
name: 'SearchRoute',
factory: $SearchRouteExtension._fromState,
),
GoRouteData.$route(
path: 'bangs',
name: 'BangRoute',
factory: $BangCategoriesRouteExtension._fromState,
routes: [
GoRouteData.$route(
path: 'search',
path: 'search/:searchText',
name: 'BangSearchRoute',
factory: $BangSearchRouteExtension._fromState,
),
@@ -88,6 +93,26 @@ extension $AboutRouteExtension on AboutRoute {
void replace(BuildContext context) => context.replace(location);
}
extension $SearchRouteExtension on SearchRoute {
static SearchRoute _fromState(GoRouterState state) => SearchRoute(
searchText:
state.pathParameters['searchText']! ?? SearchRoute.emptySearchText,
);
String get location => GoRouteData.$location(
'/search/${Uri.encodeComponent(searchText)}',
);
void go(BuildContext context) => context.go(location);
Future<T?> push<T>(BuildContext context) => context.push<T>(location);
void pushReplacement(BuildContext context) =>
context.pushReplacement(location);
void replace(BuildContext context) => context.replace(location);
}
extension $BangCategoriesRouteExtension on BangCategoriesRoute {
static BangCategoriesRoute _fromState(GoRouterState state) =>
BangCategoriesRoute();
@@ -107,10 +132,13 @@ extension $BangCategoriesRouteExtension on BangCategoriesRoute {
}
extension $BangSearchRouteExtension on BangSearchRoute {
static BangSearchRoute _fromState(GoRouterState state) => BangSearchRoute();
static BangSearchRoute _fromState(GoRouterState state) => BangSearchRoute(
searchText: state.pathParameters['searchText']! ??
BangSearchRoute.emptySearchText,
);
String get location => GoRouteData.$location(
'/bangs/search',
'/bangs/search/${Uri.encodeComponent(searchText)}',
);
void go(BuildContext context) => context.go(location);