2025最新版Flutter3.32+Dart3.8跨平台仿微信app界面聊天室。
flutter3-wechat:原创基于
flutter3.x+dart3.x+get_storage+photo_view仿微信App界面聊天系统。实现发送图文消息、gif大图、长按仿微信语音操作面板、图片预览、红包/朋友圈等功能。



使用技术
- 跨平台框架:Flutter3.32+Dart3.8
- 组件库:material-design3
- 弹窗组件:showDialog/SimpleDialog/showModalBottomSheet/AlertDialog
- 图片预览:photo_view^0.15.0
- 存储组件:get_storage^2.1.1
- 下拉刷新:easy_refresh^3.4.0
- toast提示:toast^0.3.0
- 网址预览组件:url_launcher^6.3.1


目前flutter3-wechat聊天项目已经更新到我的原创作品集。
flutter3.32+dart3.8跨平台仿微信聊天app应用


Flutter3自定义渐变导航栏

配置AppBar提供的可伸缩灵活区域属性flexibleSpace搭配gradient即可快速实现渐变导航栏。
AppBar(
title: Text('Flutter3-Chat'),
flexibleSpace: Container(
decoration: const BoxDecoration(
gradient: LinearGradient(
begin: Alignment.topLeft,
end: Alignment.bottomRight,
colors: [
Color(0xFF0091EA), Color(0xFF07C160)
],
)
),
)
),
Flutter3自定义PopupMenu下拉菜单

PopupMenuButton(
icon: FStyle.iconfont(0xe62d, size: 17.0),
offset: const Offset(0, 50.0),
tooltip: '',
color: const Color(0xFF353535),
itemBuilder: (BuildContext context) {
return <PopupMenuItem>[
popupMenuItem(0xe666, '发起群聊', 0),
popupMenuItem(0xe75c, '添加朋友', 1),
popupMenuItem(0xe603, '扫一扫', 2),
popupMenuItem(0xe6ab, '收付款', 3),
];
},
onSelected: (value) {
switch(value) {
case 0:
print('发起群聊');
break;
case 1:
Navigator.pushNamed(context, '/addfriends');
break;
case 2:
print('扫一扫');
break;
case 3:
print('收付款');
break;
}
},
)


Flutter3仿微信朋友圈


/// 微信朋友圈九宫格图片
library;
import 'package:flutter/material.dart';
import '../router/fade_route.dart';
import 'image_viewer.dart';
import '../utils/index.dart';
class ImageGroup extends StatelessWidget {
const ImageGroup({
super.key,
this.images,
this.width = 200.0,
this.album = false,
this.limit = 9,
this.onChoose,
});
final List<String>? images; // 图片组
final double width; // 图片宽度
final bool album; // 是否相册/专辑(最后面显示+可选择图片)
final int limit; // 限制多少张
final Function? onChoose; // 选择图片回调
int? get count => images?.length;
List<String>? get imgList => count! >= limit ? images?.sublist(0, limit) : images;
// 创建可点击预览图片
createImage(BuildContext context, String img, int key) {
return GestureDetector(
child: Hero(
tag: 'image_${key}_$img', // 放大缩小动画效果标识
child: img == '+' ?
Container(color: Colors.transparent, child: const Icon(Icons.add, size: 30.0, color: Colors.black45),)
:
Utils.isUrl(img) ?
Image.network(
img,
width: width,
fit: BoxFit.contain,
)
:
Image.asset(
img,
width: width,
fit: BoxFit.contain,
),
),
onTap: () {
// 选择图片
if(img == '+') {
onChoose!();
}else {
Navigator.of(context).push(FadeRoute(route: ImageViewer(
images: album ? imgList!.sublist(0, imgList!.length - 1) : imgList,
index: key,
heroTags: imgList!.asMap().entries.map((e) => 'image_${e.key}_${e.value}').toList(),
)));
}
},
);
}
@override
Widget build(BuildContext context){
// 一张图片
if(count == 1 && !album) {
return SizedBox(
width: width,
child: createImage(context, imgList![0], 0),
);
}
if(album && count! < limit) {
imgList?.add('+');
}
// 多张图片
return GridView(
shrinkWrap: true,
physics: const NeverScrollableScrollPhysics(),
gridDelegate: const SliverGridDelegateWithFixedCrossAxisCount(
// 横轴元素个数
crossAxisCount: 3,
// 纵轴间距
mainAxisSpacing: 5.0,
// 横轴间距
crossAxisSpacing: 5.0,
// 子组件宽高比例
childAspectRatio: 1,
),
children: imgList!.asMap().entries.map((e) {
return Container(
color: Colors.grey[100],
child: createImage(context, e.value, e.key),
);
}).toList(),
);
}
}


基于uni-app+vue3+pinia2+uv-ui仿抖音app短视频+聊天+直播系统
基于uni-app+vue3+deepseek+uv-ui仿DeepSeek流式AI聊天模板
基于electron35+vue3.5+deepseek+arco实战桌面端AI流式聊天
基于Vite6+Deepseek+ArcoDesign+Markdown构建网页版AI流式
Electron-ViteChat桌面端聊天室|electron31+vite5+pinia2仿微信客户端EXE
flutter3.27实战抖音app商城|flutter3.x+getX仿抖音短视频+直播+聊天app
tauri2-vue3-admin客户端后台Exe系统|vite5+tauri2+pinia2桌面后台
Electron32-Vue3OS桌面管理os模板|vite5+electron32+arco后台客户端os

1921

被折叠的 条评论
为什么被折叠?



