intermediate

This commit is contained in:
Fabian Freund
2025-01-23 14:03:55 +01:00
parent bd45ed64ee
commit 78c17a70c5
122 changed files with 8730 additions and 1662 deletions
+34
View File
@@ -1,6 +1,7 @@
import 'package:flutter/material.dart';
import 'package:go_router/go_router.dart';
import 'package:lensai/core/routing/dialog_page.dart';
import 'package:lensai/data/models/web_page_info.dart';
import 'package:lensai/features/about/presentation/screens/about.dart';
import 'package:lensai/features/bangs/presentation/screens/categories.dart';
import 'package:lensai/features/bangs/presentation/screens/list.dart';
@@ -8,10 +9,12 @@ 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/presentation/dialogs/web_page_dialog.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';
import 'package:lensai/features/user/presentation/screens/auth.dart';
part 'routes.g.dart';
@@ -19,10 +22,18 @@ part 'routes.g.dart';
name: 'BrowserRoute',
path: '/',
routes: [
TypedGoRoute<WebPageRoute>(
name: 'WebPageRoute',
path: 'page/:url',
),
TypedGoRoute<AboutRoute>(
name: 'AboutRoute',
path: 'about',
),
TypedGoRoute<UserAuthRoute>(
name: 'UserAuthRoute',
path: 'userAuth',
),
TypedGoRoute<SearchRoute>(
name: 'SearchRoute',
path: 'search/:searchText',
@@ -60,6 +71,22 @@ class BrowserRoute extends GoRouteData {
}
}
class WebPageRoute extends GoRouteData {
final String url;
const WebPageRoute({required this.url});
@override
Page<void> buildPage(BuildContext context, GoRouterState state) {
return DialogPage(
builder: (_) => WebPageDialog(
url: Uri.parse(url),
precachedInfo: state.extra as WebPageInfo?,
),
);
}
}
class AboutRoute extends GoRouteData {
@override
Page<void> buildPage(BuildContext context, GoRouterState state) {
@@ -67,6 +94,13 @@ class AboutRoute extends GoRouteData {
}
}
class UserAuthRoute extends GoRouteData {
@override
Page<void> buildPage(BuildContext context, GoRouterState state) {
return DialogPage(builder: (_) => const UserAuthScreen());
}
}
class SearchRoute extends GoRouteData {
static const String emptySearchText = ' ';
+46
View File
@@ -17,11 +17,21 @@ RouteBase get $browserRoute => GoRouteData.$route(
name: 'BrowserRoute',
factory: $BrowserRouteExtension._fromState,
routes: [
GoRouteData.$route(
path: 'page/:url',
name: 'WebPageRoute',
factory: $WebPageRouteExtension._fromState,
),
GoRouteData.$route(
path: 'about',
name: 'AboutRoute',
factory: $AboutRouteExtension._fromState,
),
GoRouteData.$route(
path: 'userAuth',
name: 'UserAuthRoute',
factory: $UserAuthRouteExtension._fromState,
),
GoRouteData.$route(
path: 'search/:searchText',
name: 'SearchRoute',
@@ -76,6 +86,25 @@ extension $BrowserRouteExtension on BrowserRoute {
void replace(BuildContext context) => context.replace(location);
}
extension $WebPageRouteExtension on WebPageRoute {
static WebPageRoute _fromState(GoRouterState state) => WebPageRoute(
url: state.pathParameters['url']!,
);
String get location => GoRouteData.$location(
'/page/${Uri.encodeComponent(url)}',
);
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 $AboutRouteExtension on AboutRoute {
static AboutRoute _fromState(GoRouterState state) => AboutRoute();
@@ -93,6 +122,23 @@ extension $AboutRouteExtension on AboutRoute {
void replace(BuildContext context) => context.replace(location);
}
extension $UserAuthRouteExtension on UserAuthRoute {
static UserAuthRoute _fromState(GoRouterState state) => UserAuthRoute();
String get location => GoRouteData.$location(
'/userAuth',
);
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 $SearchRouteExtension on SearchRoute {
static SearchRoute _fromState(GoRouterState state) => SearchRoute(
searchText: