buildChildComponentSections function

List<Widget> buildChildComponentSections({
  1. required BuildContext context,
  2. required Map<String, dynamic> editorConfig,
  3. required Map<String, dynamic> callbacks,
  4. required Map<String, dynamic> parentData,
})

Implementation

List<Widget> buildChildComponentSections({
  required BuildContext context,
  required Map<String, dynamic> editorConfig,
  required Map<String, dynamic> callbacks,
  required Map<String, dynamic> parentData,
}) {
  final Map<String, dynamic> registry = Map<String, dynamic>.from(
    callbacks['childComponents'] ?? {},
  );
  return List<Widget>.from(
    (editorConfig['childComponents'] as List).map((name) {
      final dynamic builder = registry[name];
      if (builder == null) {
        return ListTile(
          key: ValueKey('childComponent_$name'),
          leading: const Icon(Icons.error_outline, color: Colors.red),
          title: Text('Child component [$name] Not Found'),
        );
      }
      return Card(
        key: ValueKey('childComponent_$name'),
        child: ListTile(
          title: Text(childComponentLabel(name)),
          trailing: const Icon(Icons.chevron_right),
          onTap: () {
            Navigator.push(
              context,
              MaterialPageRoute(
                builder: (context) => builder(
                  parentData: parentData,
                  props: {'isChildComponent': true, 'showAppMenu': false},
                ),
              ),
            );
          },
        ),
      );
    }),
  );
}