🐛 Fix bugs in file list

This commit is contained in:
2026-01-17 22:04:20 +08:00
parent 6487a1ff65
commit 41df5f3907
2 changed files with 25 additions and 22 deletions

View File

@@ -43,6 +43,7 @@ class FileListScreen extends HookConsumerWidget {
constraints: const BoxConstraints(maxWidth: 400, minHeight: 32), constraints: const BoxConstraints(maxWidth: 400, minHeight: 32),
hintText: 'Search files...', hintText: 'Search files...',
hintStyle: WidgetStatePropertyAll(TextStyle(fontSize: 14)), hintStyle: WidgetStatePropertyAll(TextStyle(fontSize: 14)),
textStyle: WidgetStatePropertyAll(TextStyle(fontSize: 14)),
onChanged: (value) { onChanged: (value) {
// Update the query state that will be passed to FileListView // Update the query state that will be passed to FileListView
query.value = value.isEmpty ? null : value; query.value = value.isEmpty ? null : value;
@@ -119,6 +120,7 @@ class FileListScreen extends HookConsumerWidget {
mode: mode, mode: mode,
viewMode: viewMode, viewMode: viewMode,
isSelectionMode: isSelectionMode, isSelectionMode: isSelectionMode,
query: query,
), ),
loading: () => const Center(child: CircularProgressIndicator()), loading: () => const Center(child: CircularProgressIndicator()),
error: (e, _) => Center(child: Text('Error loading quota')), error: (e, _) => Center(child: Text('Error loading quota')),

View File

@@ -40,6 +40,7 @@ class FileListView extends HookConsumerWidget {
final ValueNotifier<FileListMode> mode; final ValueNotifier<FileListMode> mode;
final ValueNotifier<FileListViewMode> viewMode; final ValueNotifier<FileListViewMode> viewMode;
final ValueNotifier<bool> isSelectionMode; final ValueNotifier<bool> isSelectionMode;
final ValueNotifier<String?> query;
const FileListView({ const FileListView({
required this.usage, required this.usage,
@@ -51,6 +52,7 @@ class FileListView extends HookConsumerWidget {
required this.mode, required this.mode,
required this.viewMode, required this.viewMode,
required this.isSelectionMode, required this.isSelectionMode,
required this.query,
super.key, super.key,
}); });
@@ -75,7 +77,6 @@ class FileListView extends HookConsumerWidget {
final isSelectionMode = useState<bool>(false); final isSelectionMode = useState<bool>(false);
final selectedFileIds = useState<Set<String>>({}); final selectedFileIds = useState<Set<String>>({});
final currentVisibleItems = useState<List<FileListItem>>([]); final currentVisibleItems = useState<List<FileListItem>>([]);
final query = useState<String?>(null);
final order = useState<String?>('date'); final order = useState<String?>('date');
final orderDesc = useState<bool>(true); final orderDesc = useState<bool>(true);
final queryDebounceTimer = useRef<Timer?>(null); final queryDebounceTimer = useRef<Timer?>(null);
@@ -101,16 +102,16 @@ class FileListView extends HookConsumerWidget {
useEffect(() { useEffect(() {
// Sync query, order, and orderDesc filters // Sync query, order, and orderDesc filters
if (mode.value == FileListMode.unindexed) { if (mode.value == FileListMode.unindexed) {
unindexedNotifier.setQuery(query.value); unindexedNotifier.setQuery(this.query.value);
unindexedNotifier.setOrder(order.value); unindexedNotifier.setOrder(order.value);
unindexedNotifier.setOrderDesc(orderDesc.value); unindexedNotifier.setOrderDesc(orderDesc.value);
} else { } else {
cloudNotifier.setQuery(query.value); cloudNotifier.setQuery(this.query.value);
cloudNotifier.setOrder(order.value); cloudNotifier.setOrder(order.value);
cloudNotifier.setOrderDesc(orderDesc.value); cloudNotifier.setOrderDesc(orderDesc.value);
} }
return null; return null;
}, [query.value, order.value, orderDesc.value, mode.value]); }, [this.query.value, order.value, orderDesc.value, mode.value]);
final isRefreshing = ref.watch( final isRefreshing = ref.watch(
mode.value == FileListMode.normal mode.value == FileListMode.normal