buildSection method
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(),
],
)
],
),
);
}),
);
}