diff --git a/frontend/lib/components/dashboard/header.dart b/frontend/lib/components/dashboard/header.dart index 0fb03c1..8f841da 100644 --- a/frontend/lib/components/dashboard/header.dart +++ b/frontend/lib/components/dashboard/header.dart @@ -1,5 +1,6 @@ import 'package:aurcache/components/dashboard/search_field.dart'; import 'package:flutter/material.dart'; +import 'package:go_router/go_router.dart'; import '../../constants/color_constants.dart'; import '../../utils/responsive.dart'; @@ -46,7 +47,9 @@ class Header extends StatelessWidget { vertical: defaultPadding / (Responsive.isMobile(context) ? 2 : 1), ), ), - onPressed: () {}, + onPressed: () { + context.push("/aur"); + }, icon: const Icon(Icons.add), label: const Text( "Add New", diff --git a/frontend/lib/components/dashboard/search_field.dart b/frontend/lib/components/dashboard/search_field.dart index dbb7976..f09bd15 100644 --- a/frontend/lib/components/dashboard/search_field.dart +++ b/frontend/lib/components/dashboard/search_field.dart @@ -1,13 +1,7 @@ -import 'package:aurcache/api/packages.dart'; -import 'package:aurcache/providers/builds_provider.dart'; -import 'package:aurcache/providers/stats_provider.dart'; import 'package:flutter/material.dart'; import 'package:flutter_svg/svg.dart'; -import 'package:provider/provider.dart'; - -import '../../api/API.dart'; +import 'package:go_router/go_router.dart'; import '../../constants/color_constants.dart'; -import '../../providers/packages_provider.dart'; class SearchField extends StatelessWidget { SearchField({ @@ -30,17 +24,11 @@ class SearchField extends StatelessWidget { ), suffixIcon: InkWell( onTap: () async { - // todo this is only temporary -> add this to a proper page - await API.addPackage(name: controller.text, force: true); - Provider.of(context, listen: false) - .refresh(context); - Provider.of(context, listen: false) - .refresh(context); - Provider.of(context, listen: false).refresh(context); + context.push("/aur?query=${controller.text}"); }, child: Container( - padding: EdgeInsets.all(defaultPadding * 0.75), - margin: EdgeInsets.symmetric(horizontal: defaultPadding / 2), + padding: const EdgeInsets.all(defaultPadding * 0.75), + margin: const EdgeInsets.symmetric(horizontal: defaultPadding / 2), decoration: const BoxDecoration( color: darkgreenColor, borderRadius: BorderRadius.all(Radius.circular(10)), diff --git a/frontend/lib/components/routing/router.dart b/frontend/lib/components/routing/router.dart index 17fa7c4..f33aa4d 100644 --- a/frontend/lib/components/routing/router.dart +++ b/frontend/lib/components/routing/router.dart @@ -43,7 +43,9 @@ final appRouter = GoRouter( ), GoRoute( path: '/aur', - builder: (context, state) => AurScreen(), + builder: (context, state) { + return AurScreen(initalQuery: state.uri.queryParameters["query"]); + }, ), GoRoute( path: '/package/:id', diff --git a/frontend/lib/screens/aur_screen.dart b/frontend/lib/screens/aur_screen.dart index bcaa6a0..3ed71cc 100644 --- a/frontend/lib/screens/aur_screen.dart +++ b/frontend/lib/screens/aur_screen.dart @@ -11,7 +11,9 @@ import '../constants/color_constants.dart'; import '../providers/packages_provider.dart'; class AurScreen extends StatefulWidget { - const AurScreen({super.key}); + const AurScreen({super.key, this.initalQuery}); + + final String? initalQuery; @override State createState() => _AurScreenState(); @@ -22,6 +24,15 @@ class _AurScreenState extends State { String query = ""; Timer? timer; + @override + void initState() { + super.initState(); + if (widget.initalQuery != null) { + query = widget.initalQuery!; + controller.text = widget.initalQuery!; + } + } + @override Widget build(BuildContext context) { return Scaffold(