Skip to content

Latest commit

 

History

History
48 lines (34 loc) · 1.81 KB

CONTRIBUTING.md

File metadata and controls

48 lines (34 loc) · 1.81 KB

Contributing

FinUI is a Flutter package, so changes should keep the package small, reusable, and predictable. Prefer simple composition over large framework abstractions.

Local setup

flutter pub get
dart format --set-exit-if-changed lib test example
flutter analyze
flutter test

Run a package dry-run before release-oriented pull requests:

flutter pub publish --dry-run

Code guidelines

  • Keep public APIs named with the existing prefixes: FUI* for controls/tokens and Fui* 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, or NavigationRail unless that is an intentional breaking redesign.

Navigation rules

The route animation policy is part of the package design.

  • Use FuiNavigation.openDetail() for detail navigation.
  • Use FuiPageRoute for compact full-page detail pushes.
  • FuiPageRoute must extend MaterialPageRoute.
  • FuiPageRoute.buildTransitions() may force FuiTheme.pageTransitionsTheme, but it must delegate to super.buildTransitions().
  • Do not replace this with PageRouteBuilder plus guessed SlideTransition, FadeTransition, or custom durations.

See doc/navigation.md for the rationale.

Pull requests

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.