call_ui_kit 0.4.0
call_ui_kit: ^0.4.0 copied to clipboard
A ready-to-use Flutter call UI kit for personal audio, video, and group calls.
0.4.0 #
Performance #
- Narrow
LayoutBuilderscope inCallScreen— onlyFloatingPipViewrebuilds on constraint changes instead of all 5 layers. - Pre-compute
allParticipantslist indidUpdateWidgetinstead of allocating on every build. - Add
ValueKeytoParticipantTilein grid layouts for correct widget reuse across participant reorders. - Add
RepaintBoundarytoScreenShareBannerslide animation to isolate repaints.
Improvements #
- Animate grid layout transitions with
AnimatedPositioned(250ms easeOutCubic) — smooth tile repositioning when participants join or leave. - Add
Semanticsto all call control buttons,ParticipantTile, andSignalStrengthIconfor screen reader accessibility. - Add
endCall,speaker,camera,moreOptionslocalisation strings toCallStrings. - Extract controls visibility timer into
_ControlsVisibilityControllerfor cleanerCallScreenstate management. - Add defensive timer cancellation in
_startHideTimer()to prevent timer leaks. - Add
_VideoErrorBoundaryaround externally-provided video widgets — catches rendering errors at theRenderObjectlevel and shows a fallback instead of crashing the call screen. - Add
toString()toCallParticipantandCallThemefor easier debugging. - Document why
videoWidget/screenShareWidgetare excluded fromCallParticipantequality.
Breaking Changes #
CallBottomBar: now requires astrings(CallStrings) parameter for accessibility labels.CallVideoContent: new optionalallParticipantsparameter — pass a pre-built list to avoid per-build allocation.
0.3.1 #
Bug Fixes #
- Fix remote video being hidden when local camera is turned off in personal (1-on-1) calls.
0.3.0 #
Improvements #
- Wrap
CallScreenScaffold withSafeArea— all content now respects device insets automatically. - Replace manual
MediaQuery.paddingOfsafe area handling withLayoutBuilderfor accurate sizing. - Remove
EdgeInsets safeAreaparameter fromCallTopBarandCallBottomBar. - Remove
safeAreaLeft/Right/Top/Bottomparameters fromFloatingPipView. - Remove redundant
SafeAreawrapper fromCallVideoContentgroup call layout.
Breaking Changes #
CallTopBar: removedsafeAreaparameter.CallBottomBar: replacedsafeAreaparameter withbottomPadding(double).FloatingPipView: removedsafeAreaLeft,safeAreaRight,safeAreaTop,safeAreaBottomparameters.
0.2.1 #
- Lower minimum SDK constraints from Dart
^3.11.3/ Flutter>=3.29.0to Dart^3.4.0/ Flutter>=3.22.0for wider compatibility.
0.2.0 #
Performance #
- Cache
CallStrings.english()asCallStrings.englishDefaultsto prevent cascading widget rebuilds. - Extract speaking border animation into isolated
StatefulWidget—ParticipantTileis now aStatelessWidget. - Keep
SpeakingIndicatorin widget tree permanently and toggle viavisibleparameter instead of destroying/recreating theAnimationController. - Skip rendering
SignalStrengthIconwhen signal strength isexcellent(the default). - Cache screen sharer name lookup in
didUpdateWidgetinstead of scanning participants on every build. - Add
RepaintBoundarytoFloatingPipViewchild to isolate video repaints during snap animation. - Remove
_DefaultStringssentinel class (~60 lines of boilerplate).
Bug Fixes #
- Show remote screen share content in personal (1:1) call layout — previously
screenShareWidgetwas ignored outside group calls.
Breaking Changes #
CallScreen.stringsis now nullable (CallStrings?). Passnullor omit to use English defaults. Previously accepted a non-nullCallStringswith an internal sentinel.CallStrings.englishDefaultsis a new cached static field — use it instead ofCallStrings.english()when a stable reference is needed.
0.1.1 #
- Use GitHub-hosted screenshots to reduce package size.
- Exclude build artifacts from published package.
0.1.0 #
- Initial release.
CallScreenwidget for personal audio, personal video, and group calls.- Adaptive group call layouts: 2x2 grid, 2x3 grid, speaker view, screen share view.
- Draggable PiP (Picture-in-Picture) view with corner snapping.
- Animated speaking indicators and speaking tile borders.
- Signal strength indicator per participant.
- Participants panel with host actions (mute, remove).
- Customizable "more" bottom sheet with encryption label.
- Screen share banner with stop button.
- Full theming via
CallThemewith WhatsApp preset. - Full localization via
CallStringswith English defaults. - Zero external dependencies.