import 'dart:io'; import 'copy_center.dart' as copy show diskSpace; import 'local_fs.dart'; import '../platform/windows/recycle_bin.dart'; /// 약속: 파일 탐색기가 기기에서 받는 것 - 폴더 목록 · 저장 장치 목록 · 드라이브를 열 수 있는지 ([fs], M2 LocalFs) · /// 저장 장치의 남은 공간 · 전체 (E6 Total Commander 모양, 못 재면 null) · Android 에서만 하는 것 (경로 입력의 SMB 안내 · SMB 서버 메뉴, 앱 휴지통, .nomedia 메뉴). /// 앱은 [RealExplorerDevice] (이 기기 그대로) 를 쓰고, 시험은 시험 폴더를 저장 장치로 주는 구현을 넘긴다 abstract interface class ExplorerDevice { LocalFs get fs; /// Windows 휴지통 (M2) RecycleBinBackend get recycleBin; Future<(int, int)?> diskSpace(String path); bool get androidPaths; bool get androidTrash; bool get nomedia; } /// 이 기기 그대로 class RealExplorerDevice implements ExplorerDevice { const RealExplorerDevice(); @override LocalFs get fs => const RealLocalFs(); @override RecycleBinBackend get recycleBin => const WindowsRecycleBin(); @override Future<(int, int)?> diskSpace(String path) => copy.diskSpace(path); @override bool get androidPaths => Platform.isAndroid; @override bool get androidTrash => Platform.isAndroid; @override bool get nomedia => Platform.isAndroid; }