flutter2.x报错解决type (RouteSettings) => Route <dynamic>? is not a subtype of type (RouteSettings) => Route <dynemic> of function result

原有代码--main.dart

import 'package:flutter/material.dart';
import 'pages/tabs/Tabs.dart';
import 'routers/router.dart';
void main() {
runApp(MyApp());
}
// 输入stf 有状态组件
// stss 无状态组件
class MyApp extends StatefulWidget {
const MyApp({ Key? key }) : super(key: key); @override
_MyAppState createState() => _MyAppState();
} class _MyAppState extends State<MyApp> {
@override
Widget build(BuildContext context) {
return MaterialApp(
// home: Tabs()
initialRoute: '/', // 注意观察--问题就出在函数类型声明方面
onGenerateRoute: onGenerateRoute, // 注意观察--问题就出在函数类型声明方面
);
}
}

原有代码--router.dart

    import 'package:flutter/material.dart';
import '../pages/tabs/Tabs.dart';
import '../pages/test/Search.dart';
// 配置路由路径
var router = {
'/': (context, { arguments }) => Tabs(arguments: arguments), // 使用arguments传递参数
'/search': (context) => SearchPage()
};
// onGenerateRoute配置
// 注意观察--问题就出在函数类型声明方面
final onGenerateRoute = (RouteSettings settings) {
final String ? name = settings.name;
final Function pageContentBuilder = router[name] as Function;
if (pageContentBuilder != null) {
if (settings.arguments != null) {
final Route route = MaterialPageRoute(
builder: (context) =>
pageContentBuilder(context, arguments: settings.arguments));
return route;
} else {
final Route route =
MaterialPageRoute(builder: (context) => pageContentBuilder(context));
return route;
}
}
};

解决方案--现有代码--修改类型声明

final Map<String, WidgetBuilder> routes = {
'/': (context) => NewPage(),
'/search': (context) => ParamPage(),
}; Route<dynamic> _onGenerateRoute(RouteSettings settings) {
// return MaterialPageRoute(builder: (context) {
// // 如果访问的路由页需要登录,但当前未登录,则直接返回登录页路由,
// // 引导用户登录;其它情况则正常打开路由。
// // 统一处理
// })
final String name = settings.name;
final Function pageContentBuilder = routes[name];
print('到1');
if (settings.arguments != null) {
print('到2');
final Route route = MaterialPageRoute(
builder: (context) => NewPage(),
);
return route;
} else {
print('到3');
final Route route = MaterialPageRoute(
builder: (context) {
return ParamPage(text: ModalRoute.of(context).settings.arguments);
},
);
return route;
}
}

解决思路,点击main.dart中的 onGenerateRoute: _onGenerateRoute,跳转过去看一下其变量类型,然后根据类型进行声明

flutter2.x报错解决type (RouteSettings) => Route<dynamic> is not a subtype of type (RouteSettings) => Route<dynemic> of function result的更多相关文章

  1. flultter listview异常type '(BuildContext, int) => dynamic' is not a subtype of type '(BuildContext, int) => Widget'

    type '(BuildContext, int) => dynamic' is not a subtype of type '(BuildContext, int) => Widget' ...

  2. 使用JavaMail发送邮件-no object DCH for MIME type multipart/mixed报错解决

    最近需要实现一个使用Spring schedule按一定时间间隔自动触发条件发送邮件的功能,在开发的过程中,是按照先测试能发出text/html文本邮件,然后测试添加附件发送邮件,我碰到的问题是,文本 ...

  3. MyEclipse Server view报错解决方法

    MyEclipse Server view报错解决方法 方法/步骤     启动MyEclipse,弹出一个框,报错. ---------------------------------------- ...

  4. iOS微信支付demo运行报错解决如下

    要接入微信支付的小伙伴,首先要下载一份官方demo(APP微信支付官方Demo下载),然后打开工程,准备大干一场. 1.编译报错 编译的时候居然直接报错了(orz) 错误提示: APP微信支付官方De ...

  5. vue 项目 npm install 报错解决

    node-sass 安装报错解决办法 2017年04月15日 14:34:25 阅读数:20189 E:\kibana>npm install node-sass > node-sass@ ...

  6. 【hibernate postgresql】注解@TypeDef/@Enumerated/数据库字段gender为枚举类型,从前台接受到实体后进行保存报错:org.postgresql.util.PSQLException: ERROR: column "gender" is of type gender but expression is of type character varying

    数据库字段gender为枚举类型,从前台接受到实体后进行保存报错:org.postgresql.util.PSQLException: ERROR: column "gender" ...

  7. MySQL5.7.26安装及启动报错解决

    一.安装依赖包 [root@db01 ~]# yum install -y lrzsz [文件上传/下载] [root@db01 ~]# yum -y install xfsprogs [安装磁盘格式 ...

  8. (报错解决)Exception encountered during context initialization

    转: (报错解决)Exception encountered during context initialization 关键词 JavaEE JavaWeb eclipse XML AspectJ ...

  9. sphinx :undefined reference to `libiconv' 报错解决办法

    sphinx :undefined reference to `libiconv' 报错解决办法   2013-11-30 21:45:39 安装sphinx时不停报错...郁闷在make时报错,错误 ...

  10. redis运用连接池报错解决

    redis使用连接池报错解决redis使用十几小时就一直报异常 redis.clients.jedis.exceptions.JedisConnectionException: Could not g ...

随机推荐

  1. LcdToos如何在线调屏PORCH参数

    在点屏过程中,我们会经常碰到画面对不齐现象,在这种情况下需要多次尝试修调屏的PORCH参数来使画面显示正常:通常的做法是修改完PORCH参数下载到PG,点亮看效果,这种方法无疑效率很低,对于现象的表现 ...

  2. The XOR Largest Pair(字典树)

    ​ 题目描述 在给定的 N 个整数 A1,A2,-,AN 中选出两个进行异或运算,得到的结果最大是多少? 输入格式 第一行一个整数 N. 第二行 N 个整数 Ai. 输出格式 一个整数表示答案. 样例 ...

  3. 【Bluetooth|蓝牙开发】二、蓝牙开发入门

    个人主页:董哥聊技术 我是董哥,嵌入式领域新星创作者 创作理念:专注分享高质量嵌入式文章,让大家读有所得! [所有文章汇总] 1.蓝牙基础概念 蓝牙,是一种利用低功率无线电,支持设备短距离通信的无线电 ...

  4. SpringBoot3正式版将于11月24日发布:都有哪些新特性?

    从 2018 年 2 月 28 号发布 Spring Boot 2.0 版本开始,整个 2.X 版本已经经过了 4 年多的时间,累计发布了 95 个不同的版本,而就在前不久,2.X 系列的也已经迎来了 ...

  5. 工作总结:kafka踩过的坑

    餐饮系统每天中午和晚上用餐高峰期,系统的并发量不容小觑.公司规定各部门都要轮流值班,防止出现线上问题时能够及时处理. 后厨显示系统属于订单的下游业务. 用户点完菜下单后,订单系统会通过发 Kafka ...

  6. SQL-GROUP BY语句在MySQL中的一个错误使用被兼容的情况

    首先创建数据库hncu,建立stud表格. 添加数据: create table stud(sno varchar(30) not null primary key,sname varchar(30) ...

  7. 《Hierarchical Text-Conditional Image Generation with CLIP Latents》阅读笔记

    概括 模型总述 本篇论文主要介绍DALL·E 2模型,它是OpenAI在2022年4月推出的一款模型,OpenAI在2021年1月推出了DALL·E模型,2021年年底推出了GLIDE模型. DALL ...

  8. RabbitMQ个人实践

    前言 MQ(Message Queue)就是消息队列,其有点有很多:解耦.异步.削峰等等,本文来聊一下RabbitMQ的一些概念以及使用. RabbitMq 案例 Springboot整合Rabbit ...

  9. 认证服务(keystone)

    Keystone职能: Keystone (OpenStack ldentityService)是OpenStack中的一个独立的提供安全认证的模块,主要负责openstack用户的身份认证.令牌管理 ...

  10. 在实际应用中联合体union的妙用

    关键字union,又称为联合体.共用体,联合体的声明和结构体类似,但是它的行为方式又和结构体不同,这里的行为方式主要指的是其在内存中的体现,结构体中的成员每一个占据不同的内存空间,而联合体中的所有成员 ...