generateBlocPage method
Implementation
String generateBlocPage(String name) {
final className = toPascalCase(name);
final variableName = toCamelCase(name);
return '''
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import '../bloc/${toSnakeCase(name)}_bloc.dart';
class ${className}Page extends StatelessWidget {
const ${className}Page({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('$className'),
),
body: BlocBuilder<${className}Bloc, ${className}State>(
builder: (context, state) {
if (state is ${className}Loading) {
return const Center(child: CircularProgressIndicator());
}
if (state is ${className}Error) {
return Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text('Error: \${state.message}'),
ElevatedButton(
onPressed: () => context.read<${className}Bloc>().add(const Refresh${className}s()),
child: const Text('Retry'),
),
],
),
);
}
if (state is ${className}Loaded) {
return RefreshIndicator(
onRefresh: () async {
context.read<${className}Bloc>().add(const Refresh${className}s());
},
child: ListView.builder(
itemCount: state.${variableName}List.length,
itemBuilder: (context, index) {
final item = state.${variableName}List[index];
return ListTile(
title: Text(item.id),
// Add more UI components here
);
},
),
);
}
return const Center(child: Text('No data available'));
},
),
);
}
}
''';
}