featureWidgetTemplate top-level constant

String const featureWidgetTemplate

Template for generating feature widget files.

Implementation

const featureWidgetTemplate = r'''
import 'package:flutter/material.dart';
import 'package:flutter_reacton/flutter_reacton.dart';

import '{{snakeName}}_reactons.dart';

class {{pascalName}}Page extends StatelessWidget {
  const {{pascalName}}Page({super.key});

  @override
  Widget build(BuildContext context) {
    final value = context.watch({{camelName}}Reacton);
    final isLoading = context.watch({{camelName}}LoadingReacton);
    final error = context.watch({{camelName}}ErrorReacton);

    return Scaffold(
      appBar: AppBar(title: const Text('{{pascalName}}')),
      body: Builder(
        builder: (context) {
          if (isLoading) {
            return const Center(child: CircularProgressIndicator());
          }
          if (error != null) {
            return Center(
              child: Column(
                mainAxisSize: MainAxisSize.min,
                children: [
                  Text(error, style: const TextStyle(color: Colors.red)),
                  const SizedBox(height: 16),
                  ElevatedButton(
                    onPressed: () => context.set({{camelName}}ErrorReacton, null),
                    child: const Text('Retry'),
                  ),
                ],
              ),
            );
          }
          return Center(child: Text(value));
        },
      ),
    );
  }
}
''';