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
相关产品推荐
相关产品推荐

