Reactter_lint
is an analytics tool for Reactter that helps developers to encourage good coding practices and preventing frequent problems using the conventions Reactter.
Contents
Quickstart
Run this command in your root project:
dart pub add -d reactter_lint custom_lint
And then include these lines of code into analysis_options.yaml
:
analyzer:
plugins:
- custom_lint
Then you can see suggestions in your IDE or you can run checks manually:
dart run custom_lint
Lints
hook_late_convention
The hook late must be attached an instance.
Bad
Cause: ReactterHook
cannot be late without attaching an instance.
class AppController {
final otherState = UseState(0);
late final stateLate = UseState(otherState.value);
...
}
Good
Fix: Use Reactter.lazyState
for attaching an instance.
class AppController {
final otherState = UseState(0);
late final stateLate = Reactter.lazyState(
() => UseState(otherState.value),
this,
);
...
}
hook_name_convention
The hook name should be prefixed with use
.
Bad
Cause: The hook name is not prefixed with use
.
class MyHook extends ReactterHook {
...
}
Good
Fix: Name hook using use
preffix.
class UseMyHook extends ReactterHook {
...
}
invalid_hook_position
The hook must be defined after the hook register.
Bad
Cause: The hook cannot be defined before the hook register.
class UseMyHook extends ReactterHook {
final stateHook = UseState(0);
final $ = ReactterHook.$register;
...
}
Good
Fix: Define it after the hook register.
class UseMyHook extends ReactterHook {
final $ = ReactterHook.$register;
final stateHook = UseState(0);
...
}
invalid_hook_register
The hook register('$' field) must be final only.
Bad
Cause: The hook register cannot be defined using getter.
class MyHook extends ReactterHook {
get $ => ReactterHook.$register;
...
}
Cause: The hook register cannot be defined using setter.
class UseMyHook extends ReactterHook {
set $(_) => ReactterHook.$register;
...
}
Cause: The hook register cannot be defined using var
keyword.
class UseMyHook extends ReactterHook {
var $ = ReactterHook.$register;
...
}
Cause: The hook register cannot be defined using a type.
class UseMyHook extends ReactterHook {
Object $ = ReactterHook.$register;
...
}
Good
Fix: Define it using final
keyword.
class UseMyHook extends ReactterHook {
final $ = ReactterHook.$register;
...
}