mirror of
https://github.com/flutter/samples.git
synced 2025-11-08 13:58:47 +00:00
Migrate testing_app to go_router (#1541)
* add go_router * migrate testing_app to go_router
This commit is contained in:
@@ -3,6 +3,7 @@
|
||||
// found in the LICENSE file.
|
||||
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:go_router/go_router.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
import 'package:testing_app/models/favorites.dart';
|
||||
import 'package:testing_app/screens/favorites.dart';
|
||||
@@ -12,6 +13,23 @@ void main() {
|
||||
runApp(const TestingApp());
|
||||
}
|
||||
|
||||
GoRouter router() {
|
||||
return GoRouter(
|
||||
routes: [
|
||||
GoRoute(
|
||||
path: HomePage.routeName,
|
||||
builder: (context, state) => const HomePage(),
|
||||
routes: [
|
||||
GoRoute(
|
||||
path: FavoritesPage.routeName,
|
||||
builder: (context, state) => const FavoritesPage(),
|
||||
),
|
||||
],
|
||||
),
|
||||
],
|
||||
);
|
||||
}
|
||||
|
||||
class TestingApp extends StatelessWidget {
|
||||
const TestingApp({super.key});
|
||||
|
||||
@@ -19,17 +37,13 @@ class TestingApp extends StatelessWidget {
|
||||
Widget build(BuildContext context) {
|
||||
return ChangeNotifierProvider<Favorites>(
|
||||
create: (context) => Favorites(),
|
||||
child: MaterialApp(
|
||||
child: MaterialApp.router(
|
||||
title: 'Testing Sample',
|
||||
theme: ThemeData(
|
||||
primarySwatch: Colors.blue,
|
||||
visualDensity: VisualDensity.adaptivePlatformDensity,
|
||||
),
|
||||
routes: {
|
||||
HomePage.routeName: (context) => const HomePage(),
|
||||
FavoritesPage.routeName: (context) => const FavoritesPage(),
|
||||
},
|
||||
initialRoute: HomePage.routeName,
|
||||
routerConfig: router(),
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
@@ -7,7 +7,8 @@ import 'package:provider/provider.dart';
|
||||
import 'package:testing_app/models/favorites.dart';
|
||||
|
||||
class FavoritesPage extends StatelessWidget {
|
||||
static const routeName = '/favorites_page';
|
||||
static const routeName = 'favorites_page';
|
||||
static const fullPath = '/$routeName';
|
||||
|
||||
const FavoritesPage({super.key});
|
||||
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
// found in the LICENSE file.
|
||||
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:go_router/go_router.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
import 'package:testing_app/models/favorites.dart';
|
||||
import 'package:testing_app/screens/favorites.dart';
|
||||
@@ -21,7 +22,7 @@ class HomePage extends StatelessWidget {
|
||||
TextButton.icon(
|
||||
style: TextButton.styleFrom(foregroundColor: Colors.white),
|
||||
onPressed: () {
|
||||
Navigator.pushNamed(context, FavoritesPage.routeName);
|
||||
context.go(FavoritesPage.fullPath);
|
||||
},
|
||||
icon: const Icon(Icons.favorite_border),
|
||||
label: const Text('Favorites'),
|
||||
|
||||
@@ -12,6 +12,7 @@ dependencies:
|
||||
|
||||
cupertino_icons: ^1.0.3
|
||||
provider: ^6.0.2
|
||||
go_router: ^6.0.0
|
||||
|
||||
dev_dependencies:
|
||||
integration_test:
|
||||
|
||||
@@ -5,13 +5,13 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_test/flutter_test.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
import 'package:testing_app/main.dart';
|
||||
import 'package:testing_app/models/favorites.dart';
|
||||
import 'package:testing_app/screens/home.dart';
|
||||
|
||||
Widget createHomeScreen() => ChangeNotifierProvider<Favorites>(
|
||||
create: (context) => Favorites(),
|
||||
child: const MaterialApp(
|
||||
home: HomePage(),
|
||||
child: MaterialApp.router(
|
||||
routerConfig: router(),
|
||||
),
|
||||
);
|
||||
|
||||
@@ -65,5 +65,16 @@ void main() {
|
||||
// Check if the filled icon changes back to bordered icon.
|
||||
expect(find.byIcon(Icons.favorite), findsNothing);
|
||||
});
|
||||
|
||||
testWidgets('Testing Navigation', (tester) async {
|
||||
await tester.pumpWidget(createHomeScreen());
|
||||
|
||||
// Tap the Favorites button in the app bar
|
||||
await tester.tap(find.text('Favorites'));
|
||||
await tester.pumpAndSettle();
|
||||
|
||||
// Verify if the empty favorites screen is shown.
|
||||
expect(find.text('No favorites added.'), findsOneWidget);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user