blocGridScreenFileContent constant

String const blocGridScreenFileContent

Implementation

static const String blocGridScreenFileContent = """import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:<app_name>/App/screens/base_screen/view/base_screen.dart';
import 'package:<app_name>/App/widgets/search_field.dart';
import 'package:bloc_cli_test/App/widgets/empty_view.dart';
import 'package:<app_name>/App/core/enums/enums.dart';
import '../bloc/<screen_name>_bloc.dart';
import 'grid_list_item_view.dart';
import 'loading_view.dart';

class <screen_class_name> extends StatefulWidget {
const <screen_class_name>({super.key});

@override
State<<screen_class_name>> createState() => _<screen_class_name>State();
}

class _<screen_class_name>State extends State<<screen_class_name>> {
final TextEditingController searchController = TextEditingController();

<bloc_instance>

@override
void initState() {
  super.initState();
  init();
}

@override
void dispose() {
  <close_bloc>
  super.dispose();
}

void init() {
  WidgetsFlutterBinding.ensureInitialized().addPostFrameCallback((timeStamp) {
    <bloc_provider_instance>.add(FetchInitialData());
  });
}

@override
Widget build(BuildContext context) {
  return BaseScreen(
    appBar: AppBar(),
    body: Padding(
      padding: const EdgeInsets.symmetric(horizontal: 12),
      child: Column(
        children: [
          const SizedBox(height: 10),
          SearchField(
            searchController: searchController,
            onTextChange: (text) {
              <bloc_provider_instance>.add(SearchData(query: text));
            },
          ),
          const SizedBox(height: 10),
          Expanded(
            child: BlocBuilder<<bloc_name>, <state_name>>(
              <bloc__instance>
              builder: (context, state) {
                if (state.currentState == ActivityState.loading) {
                  return const LoadingView();
                }
                if (state.currentState == ActivityState.empty) {
                  return const EmptyView();
                }
                return GridView.builder(
                  itemCount: 20,
                  gridDelegate: const SliverGridDelegateWithFixedCrossAxisCount(
                    crossAxisCount: 2,
                    childAspectRatio: 0.7,
                    crossAxisSpacing: 5,
                    mainAxisSpacing: 5,
                  ),
                  itemBuilder: (context, index) => GridListItem(onTap: () {}),
                );
              },
            ),
          ),
        ],
      ),
    ),
  );
}
}""";