buildSection method

  1. @override
Widget buildSection(
  1. BuildContext context
)
override

Implementation

@override
Widget buildSection(BuildContext context) {
  ProgrammingBlocksDependency programmingBlocks =
      ProgrammingBlocksDependency.of(context)!;
  return Padding(
    padding: const EdgeInsets.all(4.0),
    child: ValueListenableBuilder<List<ConfigurationBlockModel?>>(
        valueListenable:
            programmingBlocks.panelController.configListListeneble,
        builder: (context, configurationBlockModels, _) {
          return SingleChildScrollView(
            physics: const BouncingScrollPhysics(),
            child: Column(
              crossAxisAlignment: CrossAxisAlignment.start,
              children: [
                InkWell(
                  onTap: () async {
                    final newInstance = await addInstance(context);
                    if (newInstance != null) {
                      programmingBlocks.addConfigurationBlockModel(
                          configurationBlockModel: newInstance);
                    }
                  },
                  child: addInstanceButtonBuilder != null
                      ? addInstanceButtonBuilder!(
                          context, creationSectionData)
                      : Padding(
                          padding: const EdgeInsets.symmetric(vertical: 8.0),
                          child: Text(
                            'Add ${_creationData.name}',
                            style: TextStyle(
                              color: _creationData.color,
                            ),
                          ),
                        ),
                ),
                Wrap(
                  spacing: 8,
                  runSpacing: 8,
                  children: [
                    if (configurationBlockModels
                        .where(
                          (element) =>
                              element?.typeName == typeName &&
                              element?.uuid !=
                                  ProgrammingBlocksDependency.mainCanvasUuid,
                        )
                        .isNotEmpty)
                      ...instancesFunctionsBlockTypes
                          .map((e) => DraggableProgrammingBlock(
                                removeOnDrag: false,
                                blockModel: () => e.blockModel()!,
                                child: AbsorbPointer(
                                  child: BlockByShape.build(
                                    puzzlePieceData: e.puzzlePieceData,
                                    shape: e.shape,
                                    blockModel: null,
                                    nameBuilder: (_) => e.nameBuilder(
                                      null,
                                    ),
                                    panelBuilder: () => e.panelBuilder(
                                      null,
                                    ),
                                    color: _creationData.color,
                                    fromCreationSection: true,
                                  ),
                                ),
                              ))
                          .toList(),
                    ...configurationBlockModels
                        .where(
                      (element) =>
                          element?.typeName == typeName &&
                          element?.uuid !=
                              ProgrammingBlocksDependency.mainCanvasUuid,
                    )
                        .map((e) {
                      return e == null
                          ? const SizedBox.shrink()
                          : InkWell(
                              onTap: () {
                                onEditInstance(
                                    context,
                                    ConfigurationBlockController(
                                        programmingBlocks: programmingBlocks,
                                        configurationBlockModel: e));
                              },
                              child: DraggableProgrammingBlock(
                                removeOnDrag: false,
                                blockModel: () => e.blockModel,
                                child: BlockByShape.build(
                                    puzzlePieceData:
                                        instancesblockType.puzzlePieceData,
                                    shape: instancesblockType.shape,
                                    blockModel: e.blockModel,
                                    nameBuilder: (_) {
                                      return Builder(builder: (context) {
                                        final programmingBlock =
                                            ProgrammingBlock.of(context);
                                        return instancesblockType.nameBuilder(
                                          ProgrammingBlockController(
                                            programmingBlock:
                                                programmingBlock!,
                                          ),
                                        );
                                      });
                                    },
                                    panelBuilder: () {
                                      return Builder(builder: (context) {
                                        return instancesblockType
                                            .panelBuilder(
                                                ProgrammingBlockController(
                                                    programmingBlock:
                                                        ProgrammingBlock.of(
                                                            context)!));
                                      });
                                    },
                                    color: _creationData.color,
                                    fromCreationSection: true),
                              ),
                            );
                    }).toList(),
                  ],
                )
              ],
            ),
          );
        }),
  );
}