
LocalSend 完整上手教程目录结构、启动入口与配置文件一次讲清【免费下载链接】localsendAn open-source cross-platform alternative to AirDrop项目地址: https://gitcode.com/GitHub_Trending/lo/localsendLocalSend 在局域网里传文件、发消息不碰外网服务器是 AirDrop 的开源替代。刚把仓库 clone 下来、对着满屏目录发懵读完这篇你能说清每块代码放在哪、入口文件从点击图标到主界面干了哪几件事以及两个锁版本的小文件为什么缺一不可。LocalSend 目录结构怎么读三层仓库地图把仓库想成一座图书馆借阅区、书库、行政办公室各管一摊。根目录正是这么分的。层目录 / 文件管什么事核心代码app/、packages/core/、cli/、server/Flutter 界面、Rust 网络核心、命令行与 Docker 两种形态发布与自动化fastlane/、support/scripts/商店元数据、各平台打包脚本工程与文档.fvmrc、Cargo.toml、CHANGELOG.md、support/readme/版本钉住、工作区定义、更新日志、多语言首页核心代码层。app/是你最常改的地方lib/下全部是 Dart 代码assets/i18n/存放着 50 多种语言的翻译文件。packages/core/用 Rust 实现了设备发现、加密与传输协议是整个项目的心脏。cli/和server/复用同一份核心一个给你终端里用一个用 Docker 跑。发布与自动化层。fastlane/metadata/android/ 里是上架用的描述文案和截图比如 en-US 下的full_description.txt和phoneScreenshots/。support/scripts/ 里按平台命名的脚本直接对应出包流程compile_windows_msix_signed.ps1、compile_android_apk.sh各自管一条流水线。工程与文档层。根目录CHANGELOG.md其实是个软链接指向app/assets/CHANGELOG.md所以更新日志始终跟着 app 走。support/readme/ 下躺着一整套多语言 READMECONTRIBUTING.md、CODE_SIGNING.md则是给贡献者和打包者的作业指导。启动流程走一遍main.dart 的三步关键动作app 的 Dart 入口是 app/lib/main.dart。从你点击图标到主界面出现真正干活的就三件事Futurevoid main(ListString args) async { final RefenaContainer container; try { container await preInit(args); // ① 界面出现前的全部初始化 } catch (e, stackTrace) { showInitErrorApp(error: e, stackTrace: stackTrace); // ② 失败也给个说法 return; } runApp( RefenaScope.withContainer( container: container, child: TranslationProvider(child: const LocalSendApp()), // ③ 注入容器 本地化 ), ); }先初始化再谈界面。preInit(args)里建好依赖注入容器配置、网络服务等都在runApp之前就绪main()本身几乎不写业务逻辑。失败不白屏。初始化一旦抛错showInitErrorApp直接渲染一个错误页把堆栈摆给你看。容器挂进组件树。RefenaScope.withContainer让任意 widget 都能context.ref取到依赖TranslationProvider在外面再包一层语言。进了LocalSendApp之后还有个小流程托盘、窗口、生命周期、快捷键四个 Watcher 依次包住MaterialApp最后home由RouterinoHome渲染initialTab设为HomeTab.receive——所以每次启动你第一眼看到的就是接收页。不钉住版本会出什么事.fvmrc 与 pubspec.yaml 配置要点想象团队五个人、三台 CI 机器各自机器上的 Flutter 版本都不一样。没人钉版本时同一份代码在 A 的电脑能跑、在 B 的电脑上编译失败这种现场就是靠下面两个文件避免的。.fvmrc相当于给工具链上了把锁 内容只有几行{ flutter: 3.41.9 }FVM 读到它就直接装 3.41.9谁新装了什么 Flutter 都不影响构建。pubspec.yaml在这个仓库里分两份配合工作区使用字段位置作用workspace根 pubspec.yaml把app、packages/localsend_isolates、packages/typed_isolates三个包划进同一个 Dart 工作区publish_to: none根 pubspec.yaml禁止任何包被误发布到 pub.devresolution: workspaceapp/pubspec.yaml声明 app 的依赖在工作区内统一解析version: 1.18.264app/pubspec.yaml当前对外发布的版本号environmentapp/pubspec.yaml要求 Flutter^3.41.0、Dart SDK^3.11.0与 .fvmrc 相互印证dependenciesapp/pubspec.yaml精确锁定 50 多个三方库如refena_flutter、routerino、slang一句话.fvmrc 钉住用哪个 Flutterpubspec 钉住依赖怎么解析缺一个就回到各跑各版本的混乱状态。跑起来本地运行 LocalSend 的第一条命令git clone https://gitcode.com/GitHub_Trending/lo/localsend后执行fvm use拉取钉住的 Flutter 版本再flutter pub get flutter run接收页就会在你屏幕上亮起来。【免费下载链接】localsendAn open-source cross-platform alternative to AirDrop项目地址: https://gitcode.com/GitHub_Trending/lo/localsend创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考