Описание задачи
Синхронный маппинг больших выборок SQL (до 10 000 строк × 50 колонок) в главном потоке UI и рендеринг объемных DDL/ошибок через SelectableText вызывают заметные фризы интерфейса (UI Jank).
Зачем
- Обеспечить плавность интерфейса (60 FPS) и мгновенный отклик при открытии больших таблиц, процедур и длинных логов.
- Исключить блокировку Event Loop при обработке десятков или сотен тысяч ячеек данных.
Предлагаемые изменения
- Оптимизация маппинга результатов в
*_sql_workspace.dart:
- При
result.length > 1000 переносить преобразование строк сокета (row.map(_cellText).toList()) в фоновый изолят через compute() или использовать ленивый маппинг в виртуальном гриде.
- Виртуализация DDL и логов:
- В
MysqlRoutineView и выводе длинных ошибок (ResultsTab) заменить SingleChildScrollView(child: SelectableText(...)) на ListView.builder с разбивкой кода/ошибки по строкам.
Технические требования
Место в коде (ориентир)
lib/features/postgresql/postgres_sql_workspace.dart
lib/features/mysql/mysql_sql_workspace.dart
lib/features/mysql/mysql_routine_view.dart
lib/features/main_screen/results_tab.dart
Acceptance Criteria
Scope
- Scope:
desktop
- Component:
Performance / Rendering
- Kind:
enhancement
Описание задачи
Синхронный маппинг больших выборок SQL (до 10 000 строк × 50 колонок) в главном потоке UI и рендеринг объемных DDL/ошибок через
SelectableTextвызывают заметные фризы интерфейса (UI Jank).Зачем
Предлагаемые изменения
*_sql_workspace.dart:result.length > 1000переносить преобразование строк сокета (row.map(_cellText).toList()) в фоновый изолят черезcompute()или использовать ленивый маппинг в виртуальном гриде.MysqlRoutineViewи выводе длинных ошибок (ResultsTab) заменитьSingleChildScrollView(child: SelectableText(...))наListView.builderс разбивкой кода/ошибки по строкам.Технические требования
lib/features/postgresql/postgres_sql_workspace.dart,mysql_sql_workspace.dartиsqlite_sql_workspace.dart.lib/features/mysql/mysql_routine_view.dartперевести просмотр DDL на построчныйListView.builderпри большом объеме текста.Место в коде (ориентир)
lib/features/postgresql/postgres_sql_workspace.dartlib/features/mysql/mysql_sql_workspace.dartlib/features/mysql/mysql_routine_view.dartlib/features/main_screen/results_tab.dartAcceptance Criteria
Scope
desktopPerformance / Renderingenhancement