输入 'Router' 而不是 found.Method 未找到:'Router',即使我已导入

Type 'Router' not found.Method not found: 'Router',even I've imported

import 'package:fluro/fluro.dart';
import 'package:flutter/material.dart' hide Router;
import 'package:flutter_scaffold/route/router_handler.dart';

final route = Router();

class Routes {
  static GlobalKey<NavigatorState> navigatorKey = GlobalKey();

  // 路由页面配置
  static String root = "/";
  static String incrementCounter = '/incrementCounter';

  static void configureRoutes(Router router) {
    router.define(root, handler: mainHandler);
    router.define(Routes.incrementCounter, handler: incrementCounterHandler);
  }

当我 运行 flutter 运行 时,出现以下错误

我升级了 fluro ==> fluro: ^2.0.3 支持 null-safety

之前的代码可以运行没有错误。

如果我将 import 'package:fluro/fluro.dart'; import 'package:flutter/material.dart' hide Router; 更改为 import 'package:fluro/fluro.dart'; import 'package:flutter/material.dart';

IDE 找不到路由器

你的

import 'package:flutter/material.dart' hide Router;

行表示您打算 import 来自该特定来源的所有内容 除了 Router。因此,看不到 Router 是预期的行为。您可能想将其更改为

import 'package:flutter/material.dart';

编辑

原来 Router 已重命名为 FluroRouter 并且代码需要反映这一点并且需要安装它。在约翰 运行

之后
flutter pub get

成功了!

你试过了吗

final router = FluroRouter();

https://github.com/lukepighetti/fluro/releases 中所述,路由器 class 自版本 1.7.0 起已被删除,并在稍后由 FluroRouter 取代

试试这个:

import 'package:campus/router/i_router.dart';
import 'package:campus/router/not_found_page.dart';
import 'package:campus/screens/home.dart';
import 'package:campus/screens/webview/webview_router.dart';
import 'package:fluro/fluro.dart';
import 'package:flutter/material.dart';

class Routes {
  static String home = '/home';
  
  static final List<IRouterProvider> _listRouter = [];

  static final FluroRouter router = FluroRouter();

  static void initRoutes() {

    /// Specify route jump error return page
    router.notFoundHandler = Handler(
        handlerFunc: (BuildContext? context, Map<String, List<String>> params) {
      debugPrint('init router');
      return const NotFoundPage();
    });

    router.define(home,
        handler: Handler(
            handlerFunc:
                (BuildContext? context, Map<String, List<String>> params) =>
                    const Home()));



    _listRouter.clear();

    _listRouter.add(SettingRouter());
 
    void initRouter(IRouterProvider routerProvider) {
      routerProvider.initRouter(router);
    }

    _listRouter.forEach(initRouter);
  }
}

然后实施这个

import 'package:fluro/fluro.dart';

abstract class IRouterProvider {
  void initRouter(FluroRouter router);
}

如您在 _listRouter.add(SettingRouter()); 的第一个代码块中所见 各自的路由由各自的模块管理, 并且这里统一加上初始化。 要实现路由模块,请使用此代码:

import 'package:campus/router/i_router.dart';
import 'package:campus/screens/webview/webview.dart';
import 'package:fluro/fluro.dart';


class SettingRouter implements IRouterProvider {
  static String settingPage = '/setting';
  static String settingLanguage = '/setting/language';

  @override
  void initRouter(FluroRouter router) {
    router.define(settingPage,
        transitionType: TransitionType.fadeIn,
        handler: Handler(handlerFunc: (_, __) => const WebView()));
    // router.define(settingLanguage,
    //     handler: Handler(handlerFunc: (_, __) => const LanguageAndLocale()));
     }
}