Releases: Corkscrews/responsive_builder
Releases · Corkscrews/responsive_builder
Release 0.9.0
responsive_builder2 v0.9.0
A major quality and architecture release focused on correctness, reduced dependencies, and developer experience. This version includes breaking changes, bug fixes, new features, and significantly expanded test coverage.
Breaking Changes
ScreenBreakpoints.normalis now mandatory -- Previously optional, thenormalbreakpoint must now be explicitly provided alongsidesmallandlarge. This ensures correct device detection across watch, phone, tablet, and desktop form factors.- Removed
providerdependency -- Replaced with a built-inScrollControllerScope(InheritedNotifier). If you were relying onproviderbeing pulled in transitively, you will need to add it to your ownpubspec.yaml.
Bug Fixes
- Fix landscape width/height swap --
ResponsiveAppUtil.setScreenSizeno longer swaps width and height in landscape.screenWidth/swandscreenHeight/shnow correctly reflect actual visible dimensions regardless of orientation. - Fix
ScrollControllerdisposal --ScrollTransformViewnow properly disposes itsScrollController, preventing memory leaks. - Fix
ResponsiveAppUtildefaults --width,heightnow default to0andpreferDesktoptofalseinstead of usinglatevariables that would crash if accessed beforeResponsiveAppis built. - Fix double assignment in
getDeviceType-- Simplified redundantisWebOrDesktop = isWebOrDesktop ??= _isWebOrDesktoptoisWebOrDesktop ??= _isWebOrDesktop.
Improvements
- Breakpoint validation --
ScreenBreakpointsandRefinedBreakpointsconstructors now assert correct ordering (small < normal < large) in debug mode, producing clear assertion errors instead of silently returning wrong device types. - Value equality --
SizingInformation,ScreenBreakpoints, andRefinedBreakpointsnow implementoperator ==andhashCode. SizingInformationis now const -- The constructor isconst, enabling compile-time constant instances.- Modernized constructors -- All widget constructors use
super.keysyntax; removed redundant= nullparameter defaults. - Code splitting -- Refactored
widget_builders.dartinto dedicated files (typedefs.dart,responsive_builder.dart,orientation_layout_builder.dart,screen_type_layout.dart,refined_layout_builder.dart). The original file remains as a barrel export for backward compatibility.
Testing
- Expanded from 84 to 145 tests, covering boundary values, edge cases, fallback chains, disposal, and breakpoint validation.
Documentation
- Rewritten README with table of contents, API reference tables, documentation for all widgets (including
RefinedLayoutBuilderand scroll transforms), default breakpoint values, and refined breakpoint configuration. - Added project investigation docs: architecture review, code quality report, bug analysis, and test coverage analysis.
CI/CD
- Added
test.ymlworkflow for automated testing on the development branch. - Fixed
publish.ymlworkflow: corrected tag glob pattern that prevented the workflow from triggering, removed pinned Flutter version, and reordered steps for reliable OIDC authentication.
Stats
- 39 files changed, ~3,900 insertions, ~1,200 deletions
- Zero third-party runtime dependencies (only Flutter SDK +
universal_platform)
Release 0.8.7
Bump 0.8.7
Release 0.8.6
Add emoji
Release 0.8.5
Update README.md
0.8.4
0.8.3
- Add
ScreenTypeLayout.builder2that includesSizingInformation. - Adds comparison operators to
DeviceScreenTypeandRefinedSize, for convenience. (FilledStacks#55) - Code coverage reached 100%.
- Replace
import 'package:flutter/material.dart';withimport 'package:flutter/widgets.dart';.