当前位置: 首页 > news >正文

flutter: 使用go router库为项目增加路由,并传递参数

一,安装:

库地址:

https://pub.dev/packages/go_router

安装:

dependencies:flutter:sdk: fluttergo_router: ^17.2.3

二,代码例子:

image

main.dart

import 'package:flutter/material.dart';
import 'package:myrouter/router/router.dart';void main() {runApp(const MyApp());
}class MyApp extends StatelessWidget {const MyApp({super.key});// This widget is the root of your application.@overrideWidget build(BuildContext context) {return MaterialApp.router(title: 'Flutter Demo',theme: ThemeData(colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),useMaterial3: true,),routerConfig: router,);}
}

router.dart

import 'package:flutter/material.dart';
import 'package:myrouter/router/router.dart';void main() {runApp(const MyApp());
}class MyApp extends StatelessWidget {const MyApp({super.key});// This widget is the root of your application.@overrideWidget build(BuildContext context) {return MaterialApp.router(title: 'Flutter Demo',theme: ThemeData(colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),useMaterial3: true,),routerConfig: router,);}
}

home_page.dart

class HomePage extends StatefulWidget {const HomePage({super.key});@overrideState<HomePage> createState() => _HomePageState();
}class _HomePageState extends State<HomePage> {@overrideWidget build(BuildContext context) {String name = '苏轼';int id = 123;return Scaffold(appBar: AppBar(backgroundColor: Theme.of(context).colorScheme.inversePrimary,title: const Text('主页'),),body: Center(child: Column(mainAxisAlignment: MainAxisAlignment.center,children: <Widget>[const Text('主页',style: TextStyle(fontSize: 40),),// 点击跳转到设置页面ElevatedButton(onPressed: () => GoRouter.of(context).push('/setting?name=${name}&id=${id}'),style: ElevatedButton.styleFrom(foregroundColor: Theme.of(context).colorScheme.onSecondary,backgroundColor: Theme.of(context).colorScheme.secondary,),child: const Text('跳转到设置页面'),)],),),);}
}

setting_page.dart

class HomePage extends StatefulWidget {const HomePage({super.key});@overrideState<HomePage> createState() => _HomePageState();
}class _HomePageState extends State<HomePage> {@overrideWidget build(BuildContext context) {String name = '苏轼';int id = 123;return Scaffold(appBar: AppBar(backgroundColor: Theme.of(context).colorScheme.inversePrimary,title: const Text('主页'),),body: Center(child: Column(mainAxisAlignment: MainAxisAlignment.center,children: <Widget>[const Text('主页',style: TextStyle(fontSize: 40),),// 点击跳转到设置页面ElevatedButton(onPressed: () => GoRouter.of(context).push('/setting?name=${name}&id=${id}'),style: ElevatedButton.styleFrom(foregroundColor: Theme.of(context).colorScheme.onSecondary,backgroundColor: Theme.of(context).colorScheme.secondary,),child: const Text('跳转到设置页面'),)],),),);}
}

三,测试效果:

image

http://www.jsqmd.com/news/759010/

相关文章:

  • 如何快速模拟iOS设备位置:iFakeLocation跨平台使用指南
  • SAP SD主数据避坑指南:客户扩展、物料视图、价格生效日期,这些细节别再踩雷了
  • 完全指南:5步高效配置Minecraft服务器安全登录插件
  • PCL2启动器架构演进:从单体应用到模块化设计的工程实践
  • Grit高级应用:构建自定义Git工作流和自动化脚本
  • IPXWrapper终极指南:让经典游戏在现代Windows上重获联机功能[特殊字符]
  • VideoLLaMA2-7B-16F模型配置详解:如何优化16帧输入处理性能
  • Dify低代码集成效率提升300%:从API对接到工作流编排的7个黄金配置技巧
  • 现代Web应用架构演进:从分层设计到全栈类型安全实践
  • 保姆级教程:在Qt Designer里添加自定义控件(以Ubuntu 18.04 + Qt 5.14.1为例)
  • flutter: 用riverpod分离view层和viewmodel层
  • Windows Cleaner深度体验:从C盘爆红到系统重生的真实转变
  • 长期项目中使用Taotoken用量预警功能管理资源消耗
  • R 4.5回测系统崩溃频发?深度解析timeBased、TTR与quantstrat v0.17.6兼容性黑洞(生产环境避坑手册)
  • 3分钟掌握YetAnotherKeyDisplayer:让键盘操作从隐形到可见的魔法工具
  • StyLua开发者指南:扩展格式化规则与自定义配置实现
  • OpenVoice性能优化指南:如何提升语音克隆质量和生成速度
  • task4
  • FreeRTOS消息队列实战:从xQueueCreate到xQueueReceive,手把手教你实现任务间通信
  • 网盘直链下载助手完整指南:如何在5分钟内掌握浏览器下载网盘文件的终极技术
  • 在 DXGI . 引入了新的功能,支持获得交换链发出开始渲染新帧的适当时机信号,通过等待此信号,可以降低输入的渲染延迟 ...
  • Dify私有化落地避坑清单:3大国产OS兼容性问题、5类中间件报错日志解析与7步快速回滚方案
  • Windows Defender移除工具深度解析:如何彻底释放系统性能潜力
  • Nintendo Switch大气层系统完整指南:从零开始掌握自定义固件
  • 如何快速上手ISD:5分钟学会交互式systemd单元管理
  • OpenVoiceV2核心技术原理揭秘:从音频处理到AI模型实现
  • 新闻媒体的多语言传播:hf_mirrors/ai-gitcode/seamless-m4t-v2-large的实时字幕生成技术
  • axios-retry源码解析:深入理解拦截器与重试机制实现原理
  • Markdown语法转换
  • 利用 Taotoken 多模型聚合能力为 AIGC 应用构建弹性后备方案