手势捕获的异常

问题描述 投票:0回答:1
import 'package:flutter/material.dart';
import 'package:go_router/go_router.dart';

class BottomNavBar extends StatelessWidget {
  const BottomNavBar({super.key});

  @override
  Widget build(BuildContext context) {
    // Ensure router is initialized

    return Container(
      decoration: BoxDecoration(
        color: const Color.fromARGB(255, 47, 47, 47),
        borderRadius: const BorderRadius.vertical(top: Radius.circular(40.0)),
        boxShadow: [
          BoxShadow(
            color: Colors.black.withOpacity(0.3),
            spreadRadius: 1,
            blurRadius: 10,
            offset: const Offset(0, -3),
          ),
        ],
      ),
      child: Padding(
        padding: const EdgeInsets.only(bottom: 8.0),
        child: SizedBox(
          height: 60.0,
          width: 345.0,
          child: BottomAppBar(
            color: Colors.transparent,
            child: Row(
              mainAxisAlignment: MainAxisAlignment.spaceEvenly,
              children: [
                IconButton(
                  icon: const Icon(Icons.home),
                  color: Colors.white,
                  onPressed: () {
                    
                     GoRouter.of(context).go('/dashboard');
                  },
                ),
                IconButton(
                  icon: const Icon(Icons.search),
                  color: Colors.white,
                  onPressed: () {
                  GoRouter.of(context).go('/search');
                    
                  },
                ),
                IconButton(
                  icon: const Icon(Icons.favorite),
                  color: Colors.white,
                  onPressed: () {
                    GoRouter.of(context).go('/favorites');
                  },
                ),
                IconButton(
                  icon: const Icon(Icons.account_circle),
                  color: Colors.white,
                  onPressed: () {
                    GoRouter.of(context).go('/profile');
                  },
                ),
              ],
            ),
          ),
        ),
      ),
    );
  }
}
abstract class SkillWaveRouter {
  static const initial = '/';
  static const dashboard = '/dashboard';
  static const profile = '/profile';
  static const update_profile = '/update_profile';
  static const search = '/search';
  static const favorites = '/favorites';
}
import 'package:go_router/go_router.dart';
import 'package:myapp/feature/course/screens/dashboard_screen.dart';
import 'package:myapp/feature/favorite/favorite_screen.dart';
import 'package:myapp/feature/profile/profile.dart';
import 'package:myapp/feature/search/search_scree.dart';
import 'package:myapp/router/domain/model_router.dart';

final router = GoRouter(
  initialLocation: SkillWaveRouter.initial,
  routes: [
    GoRoute(
      path: SkillWaveRouter.initial,
      builder: (context, state) => const DashboardScreen(),
    ),
    GoRoute(
      path: SkillWaveRouter.favorites,
      builder: (context, state) => const FavoritesScreen(),
    ),
    GoRoute(
      path: SkillWaveRouter.search,
      builder: (context, state) => const SearchScreen(),
    ),
    GoRoute(
      path: SkillWaveRouter.profile,
      builder: (context, state) => ProfileScreen(),
    ),
  ],
);
══╡╞═══════════════════════════════════════════════════════════════════

js_primitives.dart:28 The following assertion was thrown while handling a gesture:

js_primitives.dart:28 Assertion failed:

js_primitives.dart:28 file:///home/user/.pub-cache/hosted/pub.dev/go_router-13.2.4/lib/src/router.dart:507:12

js_primitives.dart:28 inherited != null

js_primitives.dart:28 "No GoRouter found in context"

js_primitives.dart:28

js_primitives.dart:28 When the exception was thrown, this was the stack:

js_primitives.dart:28 dart-sdk/lib/\_internal/js_dev_runtime/private/ddc_runtime/errors.dart 296:3       throw\_

js_primitives.dart:28 dart-sdk/lib/\_internal/js_dev_runtime/private/ddc_runtime/errors.dart 29:3        assertFailed

js_primitives.dart:28 packages/go_router/src/route_data.dart.js 3466:38                                 of

js_primitives.dart:28 packages/myapp/feature/bottom_bar/bottom_bar.dart.js 346:39                       \<fn\>

js_primitives.dart:28 packages/flutter/src/material/time.dart.js 74568:35                               handleTap

js_primitives.dart:28 packages/flutter/src/gestures/recognizer.dart.js 325:18                           invokeCallback

js_primitives.dart:28 packages/flutter/src/gestures/tap.dart.js 445:20                                  handleTapUp

js_primitives.dart:28 packages/flutter/src/gestures/tap.dart.js 240:12                                  \[\_checkUp\]

js_primitives.dart:28 packages/flutter/src/gestures/tap.dart.js 187:23                                  handlePrimaryPointer

js_primitives.dart:28 packages/flutter/src/gestures/recognizer.dart.js 576:16                           handleEvent

js_primitives.dart:28 packages/flutter/src/gestures/pointer_router.dart.js 106:9                        \[\_dispatch\]

js_primitives.dart:28 packages/flutter/src/gestures/pointer_router.dart.js 132:26                       \<fn\>

js_primitives.dart:28 dart-sdk/lib/\_internal/js_dev_runtime/private/linked_hash_map.dart 21:7           forEach

js_primitives.dart:28 packages/flutter/src/gestures/pointer_router.dart.js 130:29                       \[\_dispatchEventToRoutes\]

js_primitives.dart:28 packages/flutter/src/gestures/pointer_router.dart.js 125:37                       route

js_primitives.dart:28 packages/flutter/src/gestures/binding.dart.js 444:26                              handleEvent

js_primitives.dart:28 packages/flutter/src/gestures/binding.dart.js 432:24                              dispatchEvent

js_primitives.dart:28 packages/flutter/src/widgets/widget_state.dart.js 102392:13                       dispatchEvent

js_primitives.dart:28 packages/flutter/src/gestures/binding.dart.js 405:14                              \[\_handlePointerEventImmediately\]

js_primitives.dart:28 packages/flutter/src/gestures/binding.dart.js 376:43                              handlePointerEvent

js_primitives.dart:28 packages/flutter/src/gestures/binding.dart.js 365:14                              \[\_flushPointerEventQueue\]

js_primitives.dart:28 packages/flutter/src/gestures/binding.dart.js 340:40                              \[\_handlePointerDataPacket\]

js_primitives.dart:28 lib/\_engine/engine/platform_dispatcher.dart 1419:5                                invoke1

js_primitives.dart:28 lib/\_engine/engine/platform_dispatcher.dart 333:5                                 invokeOnPointerDataPacket

js_primitives.dart:28 lib/\_engine/engine/pointer_binding.dart 398:30                                    \[\_sendToFramework\]

js_primitives.dart:28 lib/\_engine/engine/pointer_binding.dart 224:7                                     onPointerData

js_primitives.dart:28 lib/\_engine/engine/pointer_binding.dart 1001:20                                   \<fn\>

js_primitives.dart:28 lib/\_engine/engine/pointer_binding.dart 930:7                                     \<fn\>

js_primitives.dart:28 lib/\_engine/engine/pointer_binding.dart 531:9                                     loggedHandler

js_primitives.dart:28 dart-sdk/lib/\_internal/js_dev_runtime/private/ddc_runtime/operations.dart 426:37  \_checkAndCall

js_primitives.dart:28 dart-sdk/lib/\_internal/js_dev_runtime/private/ddc_runtime/operations.dart 431:39  dcall

js_primitives.dart:28

js_primitives.dart:28 Handler: "onTap"

js_primitives.dart:28 Recognizer:

js_primitives.dart:28   TapGestureRecognizer#bc7c3

js_primitives.dart:28 ════════════════════════════════════════════════════════════════════════════════════════════════════

js_primitives.dart:28 Another exception was thrown: Assertion failed: file:///home/user/.pub-cache/hosted/pub.dev/go_router-13.2.4/lib/src/router.dart:507:12
flutter google-chrome routes flutter-go-router
1个回答
0
投票

Gorouter 找不到上下文,因此在这里您可以简单地向 Gorouter 声明 GlobalKey 键,并使用该键的上下文在您的应用程序中导航,这将起作用。

© www.soinside.com 2019 - 2024. All rights reserved.