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

Flutter基础(前端教程③-跳转)

在 Flutter 中,点击卡片列表跳转到详情页,核心是使用 Navigator 组件管理页面跳转。

完整代码(含跳转功能)

import 'package:flutter/material.dart';
import 'package:intl/intl.dart';void main() {runApp(const MyApp());
}class MyApp extends StatelessWidget {const MyApp({Key? key}) : super(key: key);@overrideWidget build(BuildContext context) {return MaterialApp(theme: ThemeData(primarySwatch: Colors.green),// 配置路由(管理页面跳转)initialRoute: '/', // 初始页面routes: {'/': (context) => const ChatListPage(), // 列表页'/detail': (context) => const ChatDetailPage(), // 详情页},);}
}// 1. 聊天列表页
class ChatListPage extends StatelessWidget {const ChatListPage({Key? key}) : super(key: key);// 模拟聊天数据List<Map<String, dynamic>> getChats() {return [{'id': 1,'name': '张三','avatar': 'https://picsum.photos/100/100?random=1','message': '下午一起吃饭吗?','time': DateTime.now().subtract(const Duration(minutes: 5)),},{'id': 2,'name': '李四','avatar': 'https://picsum.photos/100/100?random=2','message': '好的,我稍后回复你','time': DateTime.now().subtract(const Duration(hours: 1)),},];}@overrideWidget build(BuildContext context) {return Scaffold(appBar: AppBar(title: const Text('微信')),body: ListView.builder(itemCount: getChats().length,itemBuilder: (context, index) {final chat = getChats()[index];return ListTile(leading: CircleAvatar(backgroundImage: NetworkImage(chat['avatar']),),title: Text(chat['name']),subtitle: Text(chat['message']),trailing: Text(DateFormat('HH:mm').format(chat['time'])),// 点击事件:跳转到详情页onTap: () {// 传递数据到详情页(通过路由参数)Navigator.pushNamed(context,'/detail',arguments: chat, // 把当前聊天数据传过去);},);},),);}
}// 2. 聊天详情页
class ChatDetailPage extends StatelessWidget {const ChatDetailPage({Key? key}) : super(key: key);@overrideWidget build(BuildContext context) {// 获取从列表页传递过来的数据final Map<String, dynamic> chat =ModalRoute.of(context)?.settings.arguments as Map<String, dynamic>;return Scaffold(appBar: AppBar(title: Text(chat['name']), // 显示聊天对象名称),body: Center(child: Column(mainAxisAlignment: MainAxisAlignment.center,children: [Text('与 ${chat['name']} 的聊天详情'),const SizedBox(height: 20),Text('最后一条消息:${chat['message']}'),// 可以在这里添加更多详情内容(如聊天记录)],),),);}
}

http://www.dtcms.com/a/269600.html

相关文章:

  • Wend看源码-RAGFlow(上)
  • nvm npm nrm 使用教程
  • 台式电脑如何连wifi 快速连接方法
  • synchronized 的使用和特性
  • 算法学习笔记:11.冒泡排序——从原理到实战,涵盖 LeetCode 与考研 408 例题
  • VBA经典应用69例应用8:取消预设任务
  • (三)C#使用yolo
  • 在教育领域中,如何通过VRM分片错序对视频进行加密?
  • git学习:首次创建仓库
  • ubuntu 运行脚本打开WIFI adb
  • YOLO在自动驾驶交通标志识别中的应用与优化【附代码】
  • Qt:图片切割
  • 代码详细注释:演示如何使用dup()系统调用复制文件描述符
  • Linux操作系统:再谈虚拟地址空间
  • const char* 、char*和char[]的区别
  • MySQL数据库访问(C/C++)
  • 恒创科技:香港站群服务器做seo站群优化效果如何
  • 2025年数据挖掘与计算机科学国际会议 (DMCS 2025)
  • 基于Docker Compose部署Traccar容器与主机MySQL的完整指南
  • 专题:2025数据资产AI价值化:安全、战略与应用报告|附400+份报告PDF、原数据表汇总下载
  • uniapp 监听物理返回按钮
  • 分水岭算法:图像分割的浸水原理
  • 视频号账号矩阵运营中定制开发开源 AI 智能名片 S2B2C 商城小程序的赋能研究
  • 【王树森推荐系统】召回11:地理位置召回、作者召回、缓存召回
  • 【Rust base64库】Rust bas64编码解码详细解析与应用实战
  • ​​​​​​​营销费用管理,如何驱动快消企业营销投资战略升级
  • 萌新赛第(一)场
  • IEEE Fellowe助力 2025年物联网、数据科学与先进计算国际学术会议(IDSAC2025)
  • C++——string的了解和使用
  • 将oracle表字段json字符串分解提取并返回单列表