-
Notifications
You must be signed in to change notification settings - Fork 29.7k
Closed
flutter/packages
#8405Labels
P2Important issues not at the top of the work listImportant issues not at the top of the work listfound in release: 3.27Found to occur in 3.27Found to occur in 3.27found in release: 3.28Found to occur in 3.28Found to occur in 3.28has reproducible stepsThe issue has been confirmed reproducible and is ready to work onThe issue has been confirmed reproducible and is ready to work onp: go_router_builderThe go_router_builder packageThe go_router_builder packagepackageflutter/packages repository. See also p: labels.flutter/packages repository. See also p: labels.r: fixedIssue is closed as already fixed in a newer versionIssue is closed as already fixed in a newer version
Description
Steps to reproduce
- Using
go_router_builder: ^2.7.1and run on web - Navigate to route with correct query params
- Change url with invaild query params
Expected results
It should can be handle in errorPageBuilder or must be try cast to avoid error
Actual results
Can not handle error
Code sample
Code sample
// 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.
// ignore_for_file: public_member_api_docs, unreachable_from_main
import 'dart:async';
import 'package:flutter/material.dart';
import 'package:go_router/go_router.dart';
part 'main.g.dart';
void main() => runApp(App());
class App extends StatelessWidget {
App({super.key});
static const String title = 'GoRouter';
@override
Widget build(BuildContext context) => MaterialApp.router(
title: title,
routeInformationProvider: _router.routeInformationProvider,
routeInformationParser: _router.routeInformationParser,
backButtonDispatcher: RootBackButtonDispatcher(),
routerDelegate: _router.routerDelegate,
debugShowCheckedModeBanner: false,
);
late final GoRouter _router = GoRouter(
debugLogDiagnostics: true,
routes: $appRoutes,
initialLocation: '/home',
// redirect to the login page if the user is not logged in
redirect: (BuildContext context, GoRouterState state) {
// no need to redirect at all
return null;
},
);
}
@TypedGoRoute<DetailRoute>(
path: '/detail',
)
class DetailRoute extends GoRouteData {
const DetailRoute({this.id});
final int? id;
@override
Widget build(BuildContext context, GoRouterState state) =>
const DetailScreen();
}
@TypedGoRoute<HomeRoute>(
path: '/home',
)
class HomeRoute extends GoRouteData {
const HomeRoute({this.fromPage});
final String? fromPage;
@override
Widget build(BuildContext context, GoRouterState state) => HomeScreen();
}
class HomeScreen extends StatelessWidget {
const HomeScreen({super.key});
@override
Widget build(BuildContext context) {
return Scaffold(
body: Center(
child: MaterialButton(
color: Colors.blue,
onPressed: () {
DetailRoute(id: 1).go(context);
},
child: Text('Go to detail'),
),
),
);
}
}
class DetailScreen extends StatelessWidget {
const DetailScreen({super.key});
@override
Widget build(BuildContext context) {
return Scaffold(
body: Center(
child: Text('Detail with ${GoRouterState.of(context).uri.query}'),
),
);
}
}
Screenshots or Video
Screenshots / Video demonstration
Uploading Ghi Màn hình 2024-12-27 lúc 10.55.03.mov…
Logs
Logs
══╡ EXCEPTION CAUGHT BY FOUNDATION LIBRARY ╞════════════════════════════════════════════════════════
The following FormatException was thrown while dispatching notifications for
GoRouteInformationProvider:
adaw
When the exception was thrown, this was the stack:
dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/errors.dart 288:3 throw_
errors.dart:288
dart-sdk/lib/_internal/js_dev_runtime/private/profile.dart 110:39 parse
profile.dart:110
packages/error_template/main.g.dart 47:42 _$36convertMapValue
main.g.dart:47
packages/error_template/main.g.dart 21:13 $36DetailRouteExtension$124_fromState
main.g.dart:21
packages/go_router/src/route_data.dart 102:53 factoryImpl
route_data.dart:102
packages/go_router/src/route_data.dart 112:28 redirect
route_data.dart:112
packages/go_router/src/configuration.dart 443:56 [_getRouteLevelRedirect]
configuration.dart:443
packages/go_router/src/configuration.dart 400:13 processTopLevelRedirect
configuration.dart:400
packages/go_router/src/configuration.dart 417:16 processRedirect
configuration.dart:417
packages/go_router/src/configuration.dart 423:14 redirect
configuration.dart:423
packages/go_router/src/parser.dart 164:10 [_redirect]
parser.dart:164
packages/go_router/src/parser.dart 101:7 parseRouteInformationWithDependencies
parser.dart:101
packages/flutter/src/widgets/router.dart 753:12 [_processRouteInformation]
router.dart:753
packages/flutter/src/widgets/router.dart 772:5 [_handleRouteInformationProviderNotification]
router.dart:772
packages/flutter/src/foundation/change_notifier.dart 437:24 notifyListeners
change_notifier.dart:437
packages/go_router/src/information_provider.dart 139:11 notifyListeners
information_provider.dart:139
packages/go_router/src/information_provider.dart 245:5 [_platformReportsNewRouteInformation]
information_provider.dart:245
packages/go_router/src/information_provider.dart 289:5 didPushRouteInformation
information_provider.dart:289
packages/flutter/src/widgets/binding.dart 944:25 <fn>
binding.dart:944
dart-sdk/lib/_internal/js_dev_runtime/patch/async_patch.dart 610:19 <fn>
async_patch.dart:610
dart-sdk/lib/_internal/js_dev_runtime/patch/async_patch.dart 634:23 <fn>
async_patch.dart:634
dart-sdk/lib/_internal/js_dev_runtime/patch/async_patch.dart 581:31 <fn>
async_patch.dart:581
dart-sdk/lib/async/zone.dart 1676:54 runUnary
zone.dart:1676
dart-sdk/lib/async/future_impl.dart 204:18 handleValue
future_impl.dart:204
dart-sdk/lib/async/future_impl.dart 902:44 handleValueCallback
future_impl.dart:902
dart-sdk/lib/async/future_impl.dart 931:13 _propagateToListeners
future_impl.dart:931
dart-sdk/lib/async/future_impl.dart 707:5 [_completeWithValue]
future_impl.dart:707
dart-sdk/lib/async/future_impl.dart 777:7 callback
future_impl.dart:777
dart-sdk/lib/async/schedule_microtask.dart 40:11 _microtaskLoop
schedule_microtask.dart:40
dart-sdk/lib/async/schedule_microtask.dart 49:5 _startMicrotaskLoop
schedule_microtask.dart:49
dart-sdk/lib/_internal/js_dev_runtime/patch/async_patch.dart 186:7 <fn>
async_patch.dart:186
The GoRouteInformationProvider sending notification was:
Instance of 'GoRouteInformationProvider'
════════════════════════════════════════════════════════════════════════════════════════════════════Flutter Doctor output
Doctor output
[✓] Flutter (Channel stable, 3.27.1, on macOS 14.5 23F79 darwin-arm64, locale vi-VN)
• Flutter version 3.27.1 on channel stable at /Users/hieucg/flutter
• Upstream repository https://github.com/flutter/flutter.git
• Framework revision 17025dd882 (10 days ago), 2024-12-17 03:23:09 +0900
• Engine revision cb4b5fff73
• Dart version 3.6.0
• DevTools version 2.40.2
[✓] Android toolchain - develop for Android devices (Android SDK version 35.0.0)
• Android SDK at /Users/hieucg/Library/Android/sdk
• Platform android-35, build-tools 35.0.0
• ANDROID_HOME = /Users/hieucg/Library/Android/sdk
• Java binary at: /Applications/Android Studio.app/Contents/jbr/Contents/Home/bin/java
• Java version OpenJDK Runtime Environment (build 17.0.11+0-17.0.11b1207.24-11852314)
• All Android licenses accepted.
[✓] Xcode - develop for iOS and macOS (Xcode 16.0)
• Xcode at /Applications/Xcode.app/Contents/Developer
• Build 16A242d
• CocoaPods version 1.15.2
[✓] Chrome - develop for the web
• Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome
[✓] Android Studio (version 2024.1)
• Android Studio at /Applications/Android Studio.app/Contents
• Flutter plugin can be installed from:
🔨 https://plugins.jetbrains.com/plugin/9212-flutter
• Dart plugin can be installed from:
🔨 https://plugins.jetbrains.com/plugin/6351-dart
• Java version OpenJDK Runtime Environment (build 17.0.11+0-17.0.11b1207.24-11852314)
[✓] VS Code (version 1.96.2)
• VS Code at /Applications/Visual Studio Code.app/Contents
• Flutter extension version 3.102.0
[✓] Connected device (3 available)
• macOS (desktop) • macos • darwin-arm64 • macOS 14.5 23F79 darwin-arm64
• Mac Designed for iPad (desktop) • mac-designed-for-ipad • darwin • macOS 14.5 23F79 darwin-arm64
• Chrome (web) • chrome • web-javascript • Google Chrome 131.0.6778.205
[✓] Network resources
• All expected network resources are available.
• No issues found!dicenull
Metadata
Metadata
Assignees
Labels
P2Important issues not at the top of the work listImportant issues not at the top of the work listfound in release: 3.27Found to occur in 3.27Found to occur in 3.27found in release: 3.28Found to occur in 3.28Found to occur in 3.28has reproducible stepsThe issue has been confirmed reproducible and is ready to work onThe issue has been confirmed reproducible and is ready to work onp: go_router_builderThe go_router_builder packageThe go_router_builder packagepackageflutter/packages repository. See also p: labels.flutter/packages repository. See also p: labels.r: fixedIssue is closed as already fixed in a newer versionIssue is closed as already fixed in a newer version