screen static method
Implementation
static String screen(String projectName, String feature, String designDir) {
final pascal = StringUtils.toPascalCase(feature);
final title = StringUtils.toTitleCase(feature);
return '''
import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:$projectName/$designDir/app_colors.dart';
import 'package:$projectName/$designDir/app_spacing.dart';
import 'package:$projectName/$designDir/app_text_styles.dart';
import 'package:$projectName/features/$feature/${feature}_controller.dart';
class ${pascal}Screen extends ConsumerWidget {
const ${pascal}Screen({super.key});
@override
Widget build(BuildContext context, WidgetRef ref) {
final state = ref.watch(${feature}ControllerProvider);
return Scaffold(
appBar: AppBar(title: const Text('$title')),
body: SafeArea(
child: Padding(
padding: const EdgeInsets.all(AppSpacing.lg),
child: state.when(
loading: () =>
const Center(child: CircularProgressIndicator()),
error: (e, _) => Center(
child: Text(
'Error: \$e',
style: AppTextStyles.body.copyWith(color: AppColors.error),
),
),
data: (model) => Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
const Text('$title', style: AppTextStyles.h1),
const SizedBox(height: AppSpacing.sm),
Text('id: \${model.id}', style: AppTextStyles.body),
],
),
),
),
),
);
}
}
''';
}