Some Flutter code generation guidelines
class MyWidget extends StatefulWidget {
const MyWidget({super.key});
@override
State<MyWidget> createState() => _MyWidgetState();
}
class _MyWidgetState extends State<MyWidget> {
@override
Widget build(BuildContext context) {
return Container();
}
}
class MyWidget extends StatelessWidget {
const MyWidget({super.key});
@override
Widget build(BuildContext context) {
return Container();
}
}
class MyBloc extends Bloc<MyEvent, MyState> {
MyBloc() : super(MyInitialState());
@override
Stream<MyState> mapEventToState(MyEvent event) async* {
// Implement your event handling logic here
}
}
class MyRepository {
Future<MyData> fetchData() async {
// Implement your data fetching logic here
}
}
class MyUseCase {
final MyRepository repository;
MyUseCase(this.repository);
Future<MyData> execute() async {
return await repository.fetchData();
}
}
class MyModel {
final String id;
final String name;
MyModel({required this.id, required this.name});
factory MyModel.fromJson(Map<String, dynamic> json) {
return MyModel(
id: json['id'],
name: json['name'],
);
}
Map<String, dynamic> toJson() {
return {
'id': id,
'name': name,
};
}
}
class MyDataSource {
Future<MyModel> fetchData() async {
// Implement your data fetching logic here
}
}
Use 'const' keyword for constant widget constructors and for constant widget parameters to improve performance
Avoid unnecessary rebuilds by using const widgets
Use ListView.builder for long lists to improve performance