Repository navigation
Releases: nylo-core/nylo
Release list
v7.2.2
Nylo v7.2.2
This release moves the boilerplate to nylo_framework: ^7.2.2 (with nylo_support 7.30.1). The headline is Nylo Live: Metro can now reach into your app while it runs in debug mode, so you can inspect it, drive it and put it into a known state from the terminal.
New: Nylo Live
Start your app in debug mode (flutter run), then, from your project folder:
metro live # open a shell connected to the running app
metro live:devices # list this project's running apps
metro live:status # app, device, route, stack, locale, theme and signed-in user
metro live:run <command> # run one command, e.g. metro live:run route /profileMetro finds the app through the Dart Tooling Daemon, with no setup, and only connects to apps built from your project. Nothing is registered in release builds.
The metro live shell
- Commands drop their prefix:
status,route /profile,storage,seed demo_user. - Tab completes commands, options, routes, storage keys and seeders, and history is kept between sessions.
- The prompt shows the device and current route, and the shell reconnects after a hot restart.
seed,seed:rollback,export,reloadandrestartrun inside the shell.- Pipe a file in to run it as a script, one command per line:
metro live < seeds/demo.live.
Built-in commands
| Command | What it does |
|---|---|
data |
Shows the page on screen: its state, controller, the route data it was opened with, and the state's own fields |
routes, route, back |
List the routes, open a page (with --data), or go back |
deeplink |
Opens a deep link in the app, or shows how deep links are set up in your iOS and Android config |
storage, storage:clear |
Lists local storage, or shows, saves or deletes one value |
backpack |
Lists Backpack, or shows, saves or deletes one value |
auth |
Shows who is signed in, or signs in and out |
locale, theme |
Switches the app's language or theme |
state, event, toast |
Sends data to a state, fires an event, or shows a toast |
Every command takes -d <#|name> to pick a device, --all to run on every running app, and --json for machine-readable output.
Live commands
metro make:command seed_cart --live creates a command that runs inside your app, with the same builder/handle shape as a Metro command. Metro registers it in lib/bootstrap/live_commands.dart and wires it into AppProvider for you. Run it with metro app:seed_cart while the app is running.
Seeders
metro make:seeder demo_user creates a Seeder in lib/app/seeders/. Write up() to put the app into a known state: sign a user in, finish onboarding, add sample data. Inside metro live, seed demo_user runs it, and seed:rollback demo_user puts back every storage and Backpack value it changed, even across a hot restart.
Storage snapshots
Inside metro live, export demo_user saves the app's current storage and Backpack as a seeder you can commit and replay, or as a JSON file with --to. seed <file> loads a snapshot back.
New: page actions
Pages created with metro make:page get a static actions, so other code can call them:
HomePage.actions.showToast("hello");
HomePage.actions("shake_the_logo");Subclass PageStateActions with body-less methods for typed actions that survive --obfuscate builds.
New: built-in text for Nylo's UI
Nylo's toasts, confirm dialogs, validation messages and field labels now resolve through nylo.* translation keys, falling back to built-in English when a key is missing. The boilerplate's lang/en.json and lang/es.json include the new keys.
Also new since v7.0.0
- Deep linking with
Nylo.onIncomingLink,NyDeepLinkHandlerandmetro make:deep_link_provider NyStateManagedwidgets (with multiple instances) andstateAction(action, state:, id:)Str,Number,ArrandObjhelper classes- Test helpers:
visit,tapText,fillField,scrollTo,assertOnRoute,expectVisible,expectTextVisible,actingAsGuest,expectApiCalledWithand more - Subfolders for every
make:*command, e.g.metro make:stateless_widget login/BrandPanel - Metro commands shipped by packages through a
metro_commands.json FormValidator.that(...)and closure validators onInputField- Namespaced translation keys and a fallback locale
NyConnectivity.hasInternet()and satellite connectivity inConnective.envvalues can reference other keys, e.g.APP_URL=https://${APP_DOMAIN}
Boilerplate changes
nylo_framework^7.1.29→^7.2.2, plusgoogle_fonts^8.2.1,analyzer^14.3.0,intl^0.20.3,cupertino_icons^1.0.9 andfont_awesome_flutter^11.0.0- Android build files use the Kotlin DSL (
build.gradle.kts,settings.gradle.kts), and the manifest declaresINTERNETandSCHEDULE_EXACT_ALARM - The iOS minimum deployment target is 15.0
lang/en.jsonandlang/es.jsongain thenylo.*keysNotFoundPageextendsNyPage, and the home page'sListTiles sit inside aMaterialfor correct ink and taps- Explicit types and small fixes across the app code and tests, unused imports removed, and
analysis_options.yamlexcludesandroid/
Upgrading an existing app
- Set
nylo_framework: ^7.2.2inpubspec.yamland runflutter pub get. - If you use skeletonizer's API directly, it's now on 3.0:
SkeletonizerConfigDatais no longer aThemeExtension(wrap your app inSkeletonizerConfig(data: ..., child: ...)),SkeletonizerConfigData.light()and.dark()are gone, andBoneButtonType.elevated/filled/textare nowprominent/prominent/plain.LoadingStyle.skeletonizer()needs no changes. metro make:pagenow generatesbool get stateManaged => true. To call an existing page throughactions, addstatic final actions = path.actions;andstateManaged => trueto it.- New live commands and seeders need a hot restart before a running app can run them.
v7.0.0
Nylo v7.0.0
Nylo v7.0.0 is a major release with significant architectural improvements, a streamlined project structure, and modernized APIs. This release focuses on simplifying configuration, improving the developer experience, and bringing the framework up to date with the latest Dart and Flutter standards.
Breaking Changes
Boot Sequence Rewrite
Bootclass now returnsBootConfiginstead of using separatenylo()andfinished()static methods. The newBootConfigpattern consolidates setup and boot into a single configuration object.Nylo.init()API changed - now acceptsenv,setup(aBootConfig), andappLifecycleparameters instead ofsetup/setupFinishedcallbacks._setup()renamed to_init()in boot.dart for clarity.- Removed
lib/bootstrap/app.dart- theMainwidget has moved tolib/resources/widgets/main_widget.dart.
Provider API Changes
AppProvider.boot()renamed toAppProvider.setup()- the primary provider method is nowsetup().afterBoot()renamed toboot()- runs after initialization is complete.- New
nylo.configure()method replaces the previous chain ofnylo.addX()calls. All configuration (themes, decoders, controllers, localization, toast notifications, etc.) is now passed through a singleconfigure()method.
Configuration File Reorganization
config/decoders.dartmoved tobootstrap/decoders.dartconfig/events.dartmoved tobootstrap/events.dartconfig/providers.dartmoved tobootstrap/providers.dartconfig/theme.dartmoved tobootstrap/theme.dartconfig/keys.dartrenamed toconfig/storage_keys.dart-Keysclass renamed toStorageKeysConfig.config/toast_notification_styles.dartreplaced byconfig/toast_notification.dart- now usesToastNotificationConfigclass with astylesmap.
Removed Files
config/form_casts.dart- form casts configuration removed.config/validation_rules.dart- validation rules configuration removed.app/forms/login_form.dart- login form removed from boilerplate.app/forms/style/form_style.dart- form style class removed.resources/widgets/safearea_widget.dart- safe area widget removed.
Theme System Overhaul
ColorStylesnow extendsThemeColor(previouslyBaseColorStyles) and uses structured color groups (GeneralColors,AppBarColors,BottomTabBarColors) instead of flat color properties.- Theme files reorganized into
light/anddark/subdirectories underresources/themes/. - New shared
base_theme.dart-buildAppTheme()function provides a shared theme builder for both light and dark themes, eliminating duplicate theme code. ThemeColorhelper renamed toThemeColorResolverinbootstrap/helpers.dart.- Theme functions now accept
ColorStylesandBrightnessinstead of justColorStyles.
Networking Changes
ApiServiceconstructor simplified - no longer acceptsBuildContext. Constructor is now parameterless.PrettyDioLoggerremoved - replaced with built-inuseNetworkLogger: trueoption.- Interceptors now use spread syntax with
...super.interceptorsfor proper inheritance. url_launcherdependency removed - replaced with framework-providedopenUrl()helper.
Asset Directory Change
public/directory replaced withassets/- all assets (fonts, images, app icons) moved frompublic/toassets/.public/postman/directory removed entirely.
SDK Requirements
- Dart SDK requirement updated to
^3.10.7(previously>=3.4.0 <4.0.0). - Flutter version constraint removed from pubspec (previously
>=3.24.0 <4.0.0).
Dependency Changes
nylo_frameworkupdated to^7.0.0(from^6.9.2).google_fontsupdated to^8.0.1(from^6.3.3).analyzerupdated to^10.0.0(from^9.0.0).- Removed:
url_launcher,pretty_dio_logger,path_provider,flutter_local_notifications,scaffold_ui,rename.
Added
New AppConfig Class
- New
lib/config/app.dartprovides a centralizedAppConfigfinal class with static fields forappName,version,environment,apiBaseUrl,assetPath, andshowSplashScreen.
New Main Widget
lib/resources/widgets/main_widget.dart- a dedicatedMainwidget that serves as the app shell with routing, theme mode, and lifecycle management.
New LocalAsset Widget
lib/resources/widgets/local_asset_widget.dart- convenience widget for displaying local image assets with support for width, height, fit, opacity, and border radius.
Bottom Sheet Modals System
lib/resources/widgets/bottom_sheet_modals/bottom_sheet_modals.dart- newBottomSheetModalclass extendingNyBaseModalfor displaying modal bottom sheets.lib/resources/widgets/bottom_sheet_modals/modals/logout_modal.dart- pre-built logout confirmation modal.
AuthenticatedEvent
lib/app/events/authenticated_event.dart- new event that callsrouteToAuthenticatedRoute()for handling post-authentication navigation.
Download Fonts Metro Command
lib/app/commands/download_fonts.dart- new Metro CLI command (metro app:download_fonts) that downloads Google Fonts, auto-detects the font fromdesign.dart, updatespubspec.yamlwith font families, and updates the design configuration.
Spanish Localization
lang/es.json- added Spanish language translation file.
New Test Files
test/example_test.dartandtest/home_page_test.dartreplace the previoustest/widget_test.dart.
Environment Configuration
Nylo.init()now accepts anenvparameter for environment variable resolution (using generatedEnv.get)..envandlib/bootstrap/env.g.dartadded to.gitignore.
Changed
Simplified Metro Command Usage
- Commands now use the shorter
metroCLI format (e.g.,metro app:current_time) instead of the longerdart run nylo_framework:mainprefix. - Custom commands file renamed from
custom_commands.jsontocommands.json.
Home Page Redesigned
- Complete UI overhaul of the home page with a links-based layout, skeletonizer loading style, and improved structure.
Router Simplified
- Removed boilerplate comments and example code from
lib/routes/router.dart.
Toast Notifications
- Toast notification styling now uses
ToastAnimation.springFromTop()andToastAnimation.fadeOut()for entrance and exit animations.
Loading Style Default
- Default loading style changed to
LoadingStyle.skeletonizer()(fromLoadingStyle.normal()).
Model Improvements
User.keyis nowstatic finalinstead ofstatic.
Documentation Links
- All documentation links updated from
6.xto7.xacross the entire codebase.
Upgrade Guide
To upgrade from Nylo v6.x to v7.0.0:
- Update
pubspec.yamlto usenylo_framework: ^7.0.0 - Move config files:
decoders.dart,events.dart,providers.dart,theme.dartfromconfig/tobootstrap/ - Rename
config/keys.darttoconfig/storage_keys.dartand update the class name toStorageKeysConfig - Rewrite
AppProviderto usesetup()andboot()methods withnylo.configure() - Update
Bootclass to use the newBootConfigpattern - Move assets from
public/toassets/ - Restructure theme files into
light/anddark/subdirectories with the newColorStylesinterface - Remove unused dependencies (
url_launcher,pretty_dio_logger, etc.) - Create
lib/config/app.dartwithAppConfigclass - Add
lib/resources/widgets/main_widget.dart
v6.10.6
v6.10.5
v6.10.4
v6.10.3
v6.10.2
v6.10.1
v6.10.0
- Added
appLifecycletoNylo.init. This will allow you to globally handle your app's lifecycle. - Added
excludeKeystoNyStorage.deleteAll. This will allow you to exclude certain keys from being deleted when calling deleteAll. - Added
hasExecutedTaskOnceinNyScheduler. This will allow you to check if a task has been executed. - Add missing annotations
- pubspec.yaml updates
v6.9.3
- Added
setto NySession class. This will allow you to set a value in the session. - Added
onFailureparameter to isSuccessful method inNyValidator. - Fix
getInitialRouteNameto return the correct initial route name when,whenis used. - Added PullableConfig to pullable widget.
- Added new
visibleWhenextension toWidgetclass. This will allow you to show or hide a widget based on a condition. - Added
onPopto thepushTomethod. This will allow you to receive a callback when the page is popped. - Added
removeFromIndexto NyPullToRefresh. This will allow you to remove an item from the list at a specific index. - Bug fix for
NyTextFieldonChanged method. - Fix analysis_options.yaml