blueprint_flutter_core 2.2.0
blueprint_flutter_core: ^2.2.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.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