A waiting user asks two questions that a plain LinearProgressIndicator answers as one: how far along is it, and is anything still happening. The widget keeps them apart - the value may stand still for minutes while a highlight driven by 'busy' keeps crossing the bar, so a stalled percentage no longer reads as a frozen app. Also: glides to new values over 600 ms so the polling interval behind it stays invisible, refuses to walk backwards, renders indeterminate rather than an empty bar when no value is known, stops animating once the work ends, and honours reduce-motion. Eight guards in test/progress_bar_test.dart cover each of those rules. Writing them found a real defect: with busy: false the late-final controller was first constructed inside dispose(), where the ticker's context lookup is already unsafe. Signed-off-by: flemming-it <stefan.a.flemming@googlemail.com>
28 lines
947 B
Dart
28 lines
947 B
Dart
// Barrel file for the Ch∆In Studio widget library.
|
|
//
|
|
// Pages should `import '../widgets/widgets.dart';` and use the
|
|
// primitives directly — no Material `Card` / generic `Container`
|
|
// soup in page code.
|
|
|
|
export 'chain_binary_recovery.dart';
|
|
export 'chain_card.dart';
|
|
export 'chain_data_row.dart';
|
|
export 'chain_delta_mark.dart';
|
|
export 'chain_empty_state.dart';
|
|
export 'chain_en_badge.dart';
|
|
export 'chain_error_box.dart';
|
|
export 'chain_field_help.dart';
|
|
export 'chain_segments.dart';
|
|
export 'hub_load_error_view.dart';
|
|
export 'chain_flow_output.dart';
|
|
export 'chain_install_confirm.dart';
|
|
export 'chain_log_viewer.dart';
|
|
export 'chain_module_sheet.dart';
|
|
export 'chain_pill.dart';
|
|
export 'chain_progress_bar.dart';
|
|
export 'chain_settings_dialog.dart';
|
|
export 'chain_stores_dialog.dart';
|
|
export 'chain_status_dot.dart';
|
|
export 'chain_system_ai_editor.dart';
|
|
export 'chain_sealed_identity_bar.dart';
|
|
export 'chain_workspace_switcher.dart';
|