Skip to main content

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')),
);
}