FinUI is a Flutter package, so changes should keep the package small, reusable, and predictable. Prefer simple composition over large framework abstractions.
flutter pub get
dart format --set-exit-if-changed lib test example
flutter analyze
flutter testRun a package dry-run before release-oriented pull requests:
flutter pub publish --dry-run- Keep public APIs named with the existing prefixes:
FUI*for controls/tokens andFui*for higher-level framework APIs. - Avoid committing generated files, build outputs, IDE files, or lock files for the root package.
- Prefer context-based APIs in reusable widgets. Global helpers may exist, but they should not be the only path.
- Keep widgets small and composable.
- Preserve app state across tab changes with
IndexedStack. - Do not replace custom bottom tabs or rails with Flutter's default
NavigationBar,BottomNavigationBar, orNavigationRailunless that is an intentional breaking redesign.
The route animation policy is part of the package design.
- Use
FuiNavigation.openDetail()for detail navigation. - Use
FuiPageRoutefor compact full-page detail pushes. FuiPageRoutemust extendMaterialPageRoute.FuiPageRoute.buildTransitions()may forceFuiTheme.pageTransitionsTheme, but it must delegate tosuper.buildTransitions().- Do not replace this with
PageRouteBuilderplus guessedSlideTransition,FadeTransition, or custom durations.
See doc/navigation.md for the rationale.
A pull request should include:
- A short description of the behavior change.
- Screenshots or recordings for visual component changes when possible.
- Tests or a clear explanation when tests are not practical.
- README or docs updates for public API changes.