You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter使用fluro ^2.0.3路由出现参数类型不匹配报错如何解决

报错原因

你遇到的类型不匹配报错是因为fluro: ^2.0.3版本对Handler的handlerFunc函数签名做了不兼容更新,和你代码里写的旧版本签名不一致:

  • 第一个入参BuildContext调整为可空类型,需要声明为BuildContext?
  • 第二个入参的泛型从Map<String, dynamic>调整为Map<String, List<String>>,所有路由参数都会以数组形式存储在这个参数中

修复方案

直接修改router.dart里的_homeHandler定义即可,修改后的完整代码如下:

import 'package:fluro/fluro.dart';
import 'package:flutter/material.dart';
import 'package:tel_app/pages/home.dart';

// 建议改名避免和Fluro自带的Router类重名冲突,也可保留原有类名
class AppRouter {
  final router = FluroRouter();

  static Handler _homeHandler = Handler(
      // 仅调整两个入参的类型即可
      handlerFunc: (BuildContext? context, Map<String, List<String>> params) =>
          HomePage());

  void setupRouter() {
    router.define(
      '/',
      handler: _homeHandler,
    );
  }
}

扩展说明

如果你后续需要从路由中获取传递的参数,直接从params对应key的数组中取第一个值即可,比如传递了id参数,取值代码为params['id']?.first。

内容的提问来源于stack exchange,提问作者django

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 00:12:01