Skip to content

Releases: Corkscrews/responsive_builder

Release 0.9.0

09 Feb 10:01
62c75a4

Choose a tag to compare

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.normal is now mandatory -- Previously optional, the normal breakpoint must now be explicitly provided alongside small and large. This ensures correct device detection across watch, phone, tablet, and desktop form factors.
  • Removed provider dependency -- Replaced with a built-in ScrollControllerScope (InheritedNotifier). If you were relying on provider being pulled in transitively, you will need to add it to your own pubspec.yaml.

Bug Fixes

  • Fix landscape width/height swap -- ResponsiveAppUtil.setScreenSize no longer swaps width and height in landscape. screenWidth/sw and screenHeight/sh now correctly reflect actual visible dimensions regardless of orientation.
  • Fix ScrollController disposal -- ScrollTransformView now properly disposes its ScrollController, preventing memory leaks.
  • Fix ResponsiveAppUtil defaults -- width, height now default to 0 and preferDesktop to false instead of using late variables that would crash if accessed before ResponsiveApp is built.
  • Fix double assignment in getDeviceType -- Simplified redundant isWebOrDesktop = isWebOrDesktop ??= _isWebOrDesktop to isWebOrDesktop ??= _isWebOrDesktop.

Improvements

  • Breakpoint validation -- ScreenBreakpoints and RefinedBreakpoints constructors 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, and RefinedBreakpoints now implement operator == and hashCode.
  • SizingInformation is now const -- The constructor is const, enabling compile-time constant instances.
  • Modernized constructors -- All widget constructors use super.key syntax; removed redundant = null parameter defaults.
  • Code splitting -- Refactored widget_builders.dart into 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 RefinedLayoutBuilder and 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.yml workflow for automated testing on the development branch.
  • Fixed publish.yml workflow: 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

06 Jun 00:03

Choose a tag to compare

Bump 0.8.7

Release 0.8.6

05 Jun 23:57

Choose a tag to compare

Add emoji

Release 0.8.5

04 Jun 02:36

Choose a tag to compare

Update README.md

0.8.4

31 May 22:33

Choose a tag to compare

Update build

0.8.3

31 May 12:34

Choose a tag to compare

  • Add ScreenTypeLayout.builder2 that includes SizingInformation.
  • Adds comparison operators to DeviceScreenType and RefinedSize, for convenience. (FilledStacks#55)
  • Code coverage reached 100%.
  • Replace import 'package:flutter/material.dart'; with import 'package:flutter/widgets.dart';.

0.8.2

31 May 02:45

Choose a tag to compare

Fix code sample

0.8.1

31 May 02:12

Choose a tag to compare

Release 0.8.1