Mobile Coding Standards
Widget Organization
- Screens in
lib/screens/ - Reusable widgets in
lib/widgets/ - Keep widgets small and focused
State Management
Use Provider for app state:
// In provider
class UserProvider extends ChangeNotifier {
User? _user;
User? get user => _user;
Future<void> login(String email, String password) async {
_user = await AuthService.login(email, password);
notifyListeners();
}
}
// In widget
Consumer<UserProvider>(
builder: (context, userProvider, child) {
return Text(userProvider.user?.name ?? 'Guest');
},
)
Error Handling
try {
await apiService.doSomething();
} catch (e) {
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(content: Text('Error: $e')),
);
}