| // Copyright 2013 The Flutter Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| import 'package:flutter/material.dart'; |
| import 'package:flutter_test/flutter_test.dart'; |
| import 'package:go_router/go_router.dart'; |
| |
| void main() { |
| group('replaceNamed', () { |
| Future<GoRouter> createGoRouter( |
| WidgetTester tester, { |
| Listenable? refreshListenable, |
| }) async { |
| final GoRouter router = GoRouter( |
| initialLocation: '/', |
| routes: <GoRoute>[ |
| GoRoute( |
| path: '/', |
| name: 'home', |
| builder: (_, __) => const _MyWidget(), |
| ), |
| GoRoute( |
| path: '/page-0/:tab', |
| name: 'page-0', |
| builder: (_, __) => const SizedBox()) |
| ], |
| ); |
| await tester.pumpWidget(MaterialApp.router( |
| routerConfig: router, |
| )); |
| return router; |
| } |
| |
| testWidgets('Passes GoRouter parameters through context call.', |
| (WidgetTester tester) async { |
| final GoRouter router = await createGoRouter(tester); |
| await tester.tap(find.text('Settings')); |
| await tester.pumpAndSettle(); |
| expect(router.location, '/page-0/settings?search=notification'); |
| }); |
| }); |
| } |
| |
| class _MyWidget extends StatelessWidget { |
| const _MyWidget(); |
| |
| @override |
| Widget build(BuildContext context) { |
| return ElevatedButton( |
| onPressed: () => context.replaceNamed('page-0', |
| pathParameters: <String, String>{'tab': 'settings'}, |
| queryParameters: <String, String>{'search': 'notification'}), |
| child: const Text('Settings')); |
| } |
| } |