form_ui_builder 0.0.6 copy "form_ui_builder: ^0.0.6" to clipboard
form_ui_builder: ^0.0.6 copied to clipboard

A Flutter package that helps you build dynamic and customizable user interfaces quickly and easily.

example/lib/main.dart

import 'package:example/bloc/main_bloc.dart';
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:form_ui_builder/form_ui_builder.dart';

void main() {
  // Initialize the form_ui_builder package dependencies
  setupServiceLocator();

  runApp(const MyApp());
}

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

  // This widget is the root of your application.
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
      ),
      home: BlocProvider(
        create: (_) => MainBloc(),
        child: const MyHomePage(title: 'Flutter Demo Home Page'),
      ),
    );
  }
}

class MyHomePage extends StatelessWidget {
  const MyHomePage({super.key, required this.title});

  final String title;

  @override
  Widget build(BuildContext context) {
    return BlocConsumer<MainBloc, MainState>(
      listener: (context, state) {
        if (state.status == MainStatus.failure) {
          showSnackBar(context, state.errorMessage);
        }

        if (state.formLogicBundle.parameterMap.isNotEmpty &&
            !state.hasNavigated) {
          context.read<MainBloc>().add(
            const SetHasNavigatedEvent(hasNavigated: true),
          );
          Navigator.of(context)
              .push(
                MaterialPageRoute(
                  builder: (context) => BlocProvider(
                    create: (_) => FormUiBuilderBloc(
                      initialFormLogicBundle: state.formLogicBundle,
                    ),
                    child: FormUiBuilderScreen(
                      onSubmit: (valueMap) {
                        Navigator.of(context).pop(valueMap);
                        context.read<MainBloc>().add(
                          const SetHasNavigatedEvent(hasNavigated: false),
                        );
                      },
                    ),
                  ),
                ),
              )
              .then((valueMap) {
                // You can handle valueMap here, e.g. print or process
                if (valueMap != null) {}
              });
        }
      },
      builder: (context, state) {
        return Scaffold(
          appBar: AppBar(
            backgroundColor: Theme.of(context).colorScheme.inversePrimary,
            title: Text(title),
          ),
          body: Center(
            child: ElevatedButton(
              onPressed: () {
                context.read<MainBloc>().add(const GetParameterEvent());
              },
              child: const Text('Load Form UI Builder'),
            ),
          ),
        );
      },
    );
  }
}
0
likes
150
points
148
downloads

Documentation

API reference

Publisher

unverified uploader

Weekly Downloads

A Flutter package that helps you build dynamic and customizable user interfaces quickly and easily.

Homepage

License

MIT (license)

Dependencies

dio, equatable, flutter, flutter_bloc, fpdart, get_it, internet_connection_checker_plus, intl, synchronized

More

Packages that depend on form_ui_builder