blueprint_flutter_core 2.3.0
blueprint_flutter_core: ^2.3.0 copied to clipboard
A modular Flutter core package providing UI components, theming, and feature modules for scalable apps.
Changelog #
All notable changes to this project are documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
2.3.0 #
Added #
Security
- New
blueprint_securityentry point withSecurityController,LockScreen, and PIN views (create_pin,verify_pin,change_pin,reset_pin). LockScreen.asDialog()for modal app-lock flows.
Widgets & Inputs
FxKeyboardandFxKeyboardThemefor custom numeric keypad input.FxPinInputrebuilt on top of thepinputpackage with theme support viaFxThemeData.pinInputTheme.FxViewTransitionThemeandFxComponentTheme.switchingViewTransition()for auth step animations.FxOverlayThemeDataand expandedFxOverlayTileThemeDatafor overlay styling.
Auth
AuthFlowScreen.onAuthSuccessnow receives the authenticatedUser.FxPhoneInputConfiggroups phone-input options (layout, field options, overlay type).FxSignupFormGroupand signup step form controls for structured registration fields.
Example app
- Full example restructure: splash, auth, dashboard shell, home, and notification screens.
- GoRouter-based routing with
app_router,app_paths, andapp_routes. - Dashboard dock/drawer navigation samples with custom styles.
Changed #
Auth
- Refactored
AuthStepTemplateand step screens to usebuildShell(context:, ref:, …)— templates no longer holdBuildContextorWidgetRef. - Auth step transitions use
AnimatedSwitcherwith configurable slide transitions. - Consolidated signup step behind
FxSignupFormGroupandSignupStepController.
Widgets & Overlays
- Refactored
FxBottomSheetShellandFxDialogaroundFxOverlayOptions. FxSelectFieldaddsvalueBuilderfor custom selected-value labels.FxPinInputThemesimplified and wired intoFxThemeData.
Theme
- Extended
FxComponentThemewith checkbox, search, and clear icons. FxThemeDataexposespinInputTheme,overlayTheme, andoverlayTileTheme.
Example & tooling
- Example iOS deployment target raised to 15.0; Firebase wired via direct Swift Package Manager dependencies.
- Example theme files expanded (
app_colors,app_typography,app_theme_data). - Removed obsolete
scripts/release.sh.
Removed #
FxOtpInputwidget (useFxPinInputinstead).FxPinInputControllerandFxPinInputField(replaced bypinput-backedFxPinInput).- Legacy
example/lib/ui/home_screen.dart.
Dependencies #
- Added
pinput: ^6.0.2.
2.2.0 #
Added #
Auth
- Implemented forgot password functionality with new state management and UI templates.
- Enhanced authentication flow with new step templates.
Widgets & Forms
- Introduced
FxPhoneInputThemeandFxFormControlclasses. - Added new input field components and enhanced existing widgets with new options and themes.
Networking & Core
- Introduced
FxErrorandFxResultclasses for improved error handling and response management.
Changed #
Auth
- Refactored authentication flow existing steps for improved structure.
- Updated
EmailStepScreenlayout to usebodyparameter. - Updated phone input formatting logic and consolidated auth module exports.
Widgets & UI
- Refactored input field components for improved usability and theme management.
- Updated icon path handling across multiple categories for consistency and maintainability.
Networking
- Enhanced
FxAuthInterceptorto normalize public endpoint paths and improve token handling.
2.1.0 #
Added #
Widgets
FxCounterBadgeandFxCounterTextwidgets.FxEmptyStatewidget for handling empty data UI states.FxRefreshViewlayout widget to implement pull-to-refresh functionality easily.FxNotificationIconButtonandFxNotificationPageViewwidgets in the notifications module.
Auth
- Added new styling models for Phone Auth:
FxPhoneEntryStyle,FxOtpEntryStyle,FxRegisterEntryStyle.
Changed #
- Restructured
FxPhoneAuthsteps into internal components (_phone_entry.dart,_otp_entry.dart,_register_entry.dart). - Removed
FxPhoneAuthThemein favor of individual component styles.
Refactoring (Breaking) #
Notifications
- Renamed notification module files and classes to use
Fxprefix:NotificationController→FxNotificationControllerNotificationState→FxNotificationStateNotificationService→FxNotificationServiceAppNotification→FxNotificationDeviceRegistration→FxDeviceRegistration
2.0.0 #
Breaking #
Networking
- Rename public networking types to the
Fxprefix:ApiClient→FxApiClientTokenManager→FxTokenManagerAppService→FxServiceServiceContext→FxServiceContextAuthInterceptor→FxAuthInterceptorLogInterceptor→FxLogInterceptorFirebaseClient→FxFirebaseClient
- Rename
api_endpoints.dart→fx_api_endpoints.dart(update deep imports if used) - Riverpod:
dioProvider→fxDioProvider,serviceContextProvider→fxServiceProvider FxControllerMixin.serviceContextreturnsFxServiceContextfromfxServiceProvider- Update
blueprint_flutter_core.dartandblueprint_network.dartimports/exports - Stop exporting
ErrorInterceptor,ErrorMapper,RefreshCoordinator, andPendingRequestHandler(privatepartfiles ofFxAuthInterceptor) - Remove
ErrorInterceptor(401 refresh + error mapping live inFxAuthInterceptor)
Theme
- Rename theme source files:
base_colors.dart,base_sizes.dart,base_theme.dart,base_theme_data.dart,base_typography.dart→fx_colors.dart,fx_sizes.dart,fx_theme.dart,fx_theme_data.dart,fx_typography.dart - Update
blueprint_theme.dartexport paths (type names such asFxColorsare unchanged)
Routing
AuthGuard→FxAuthGuard(blueprint_flutter_core.dartexport path updated)- Default
publicPathsnow includes'/'in addition to splash and login
Controllers
- Remove
FxStatehelper base class fromfx_controller_mixin.dart(was apartfile)
Widgets
FxTextDivider: removeisDotted; addalign;dashWidth,dashSpace, andstrokeWidthare requireddoubles with new defaults; divider rendering logic updated
Added #
App shell (exported from blueprint_widgets.dart)
FxShell,FxShellScope,FxShellStyle— post-login scaffold with pane body switchingFxPane,FxSite,FxPaneState,FxPaneType,FxPaneDividerStyle,FxShellAnimationFxDock,FxDockStyle— bottom navigation dockFxDrawer,FxDrawerStyle— side drawersFxShellCtrlandfxShellCtrlProvider— pane registry and navigation (goToPane,panesFor,syncFromWidget)
Widgets
FxReveal,FxRevealPreferred,FxRevealTransitions— animated show/hide for chrome (e.g. app bar)FxTile,FxTileView— tile list / navigation helpersFxAppBarStyleandFxAppBar.fromStyleFxScaffold:FxSafeAreaInsets, fullScaffoldparity (drawers, bottom sheet, FAB location,extendBody, restoration, etc.), optionalsystemUiOverlayStyle;padding: EdgeInsets.zeroskips padding;safeArea: nulldisablesSafeAreaFxUiToolkit.shellScopeonFxShellScope
Networking
FxHeadersInterceptor—X-Request-Id,X-Correlation-Id,X-Client-Trace-Id,Accept-Language,User-Agent,X-API-Version,X-Environment; optionalX-Tenant-Id/X-Org-IdfromFxConfig; optionalIdempotency-KeyviaOptions.extra[FxRequestExtras.idempotencyKey]FxService,FxServiceContextFxConfig:apiUserAgent,clientVersion,tenantId,orgId
Auth
AuthUser.roles(List<String>, default[])JwtHelper.roles(String token)
Utilities
TextFormatter.maskPhoneNumberfor masked phone display
Dependencies
easy_copy_with_annotation(runtime)easy_copy_with(dev) — used for shell stylecopyWithcodegen
Changed #
FxApiClientinterceptor order:FxHeadersInterceptor→FxLogInterceptor→FxAuthInterceptor- Auth refresh and error mapping consolidated in
FxAuthInterceptor AuthController, auth/email/phone auth, notification, and profile services useFx*networking typesFxCoreandNotificationControlleruseFxFirebaseClientFxScrollableFormandFxPhoneAuthThemelayout/theming adjustments- Example app updated for
FxAuthGuardand related APIs
Removed #
ErrorInterceptorapp_service.dart,service_context.dart(replaced byfx_service.dart,fx_service_context.dart)fx_state.dart(FxStatebase class)- Theme
base_*.dartfiles (replaced byfx_*.dart)
Migration #
Providers and services
ref.read(fxDioProvider);
ref.read(fxServiceProvider);
class MyService extends FxService {
MyService(super.ctx);
}
Auth redirect
redirect: (context, state) => FxAuthGuard.redirect(
authState: ref.read(authControllerProvider),
location: state.uri.toString(),
loginPath: '/login',
homePath: '/home',
);
Idempotency (mutating requests)
dio.post('/path', data: body, options: Options(
extra: {FxRequestExtras.idempotencyKey: 'stable-key'},
));
Theme imports
// Before
import 'package:blueprint_flutter_core/src/core/theme/base_colors.dart';
// After
import 'package:blueprint_flutter_core/blueprint_theme.dart';
// or
import 'package:blueprint_flutter_core/src/core/theme/fx_colors.dart';
1.0.2 #
- Add
flutter_libphonenumberdependency - Enhance phone input handling