import 'delete_flow.dart'; import 'drop_flow.dart'; import 'explorer_controller.dart'; import 'explorer_jobs.dart'; import 'explorer_pane.dart'; import 'explorer_select.dart'; import 'open_flow.dart'; import 'rename_flow.dart'; import 'rsync_flow.dart'; import 'search_flow.dart'; import 'tools_flow.dart'; import 'transfer_flow.dart'; import 'view_dialogs.dart'; import 'write_guard.dart'; /// 약속 (E5d-6): 탐색기 하나의 흐름 모듈 묶음 - 버튼 · 줄 메뉴 · 단축키 · 끌어 놓기가 같은 것을 쓴다 (작업 목록 · 담아 둔 것이 하나). /// 처음 쓸 때 만든다. 화면 배치에서 오는 것 (다른 창의 폴더 · 창이 둘인지 · 앱 휴지통을 쓰는 기기인지) 은 함수로 받는다 class ExplorerFlows { ExplorerFlows(this.ctl, this.sel, {required this.androidTrash, required this.otherDirOf, required this.otherDir, required this.twoPanes}); final ExplorerController ctl; final ExplorerSelect sel; final bool Function() androidTrash; /// [pane] 옆 창의 지금 폴더 (두 창일 때만, 압축 풀 곳) final String? Function(ExplorerPane pane) otherDirOf; /// 복사 · 이동 갈 곳 (두 창 · 숨은 다른 창, 없으면 담아 두기) final String? Function() otherDir; final bool Function() twoPanes; late final guard = ExplorerGuard(ctl); late final jobs = ExplorerJobs(ctl); late final transfers = ExplorerTransfers(ctl, guard, jobs); late final rsync = ExplorerRsyncFlow(ctl, jobs, transfers); late final deletes = ExplorerDeleteFlow(ctl, sel, guard, androidTrash: androidTrash); late final opener = ExplorerOpener(ctl, sel, guard, otherDirOf: otherDirOf); late final renames = ExplorerRenames(ctl, guard); late final tools = ExplorerTools(ctl, deletes, transfers); late final dialogs = ExplorerViewDialogs(ctl, twoPanes: twoPanes); late final search = ExplorerSearch(ctl, opener, transfers, deletes, otherDir: otherDir); late final drops = ExplorerDrops(ctl, sel, guard, transfers); void dispose() { search.dispose(); transfers.dispose(); jobs.dispose(); } }