# FluttertDemo **Repository Path**: laze1/fluttert-demo ## Basic Information - **Project Name**: FluttertDemo - **Description**: Flutter各种功能实现的demo - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-11-23 - **Last Updated**: 2025-11-23 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # TestDemo —— Bloc + Clean Architecture + GetIt + PIP ## 目录结构 - `lib/core`: 通用基建(DI、Error、UseCase) - `lib/domain`: 业务抽象(实体、仓库接口、用例) - `lib/data`: 具体实现(video_player 数据源与仓库实现) - `lib/presentation`: UI 层(主页、视频页面、Bloc、PIP 悬浮窗) ## 运行 1. 安装依赖:`flutter pub get` 2. 运行应用:`flutter run` 3. 主页进入“画中画测试”,默认播放网络示例视频 ## 画中画(PIP)说明 - 点击 AppBar 的 PIP 按钮: - 返回主页,并在右上角显示可拖拽的悬浮小窗,视频持续播放 - 悬浮窗右上角按钮: - “展开”返回播放页并关闭小窗 - “关闭”仅关闭小窗(不影响播放状态) ## 本地/网络视频 - 网络:默认示例 `BigBuckBunny` - 本地:传入 `VideoSource.file('file:///...')` 即可(可扩展文件选择) ## 单元测试 - `test/video_bloc_test.dart` 覆盖初始化/播放/画中画/拖动逻辑(使用 Fake 仓库)