import 'package:flutter/material.dart'; import 'package:twonly/src/views/camera/image_editor/data/layer.dart'; import 'package:twonly/src/views/camera/image_editor/layers/background_layer.dart'; import 'package:twonly/src/views/camera/image_editor/layers/draw_layer.dart'; import 'package:twonly/src/views/camera/image_editor/layers/emoji_layer.dart'; import 'package:twonly/src/views/camera/image_editor/layers/filter_layer.dart'; import 'package:twonly/src/views/camera/image_editor/layers/text_layer.dart'; /// View stacked layers (unbounded height, width) class LayersViewer extends StatelessWidget { final List layers; final Function()? onUpdate; const LayersViewer({ super.key, required this.layers, this.onUpdate, }); @override Widget build(BuildContext context) { return Stack( alignment: Alignment.center, children: [ ...layers.whereType().map((layerItem) { return BackgroundLayer( layerData: layerItem, onUpdate: onUpdate, ); }), ...layers.whereType().map((layerItem) { return FilterLayer( layerData: layerItem, ); }), ...layers .where((layerItem) => layerItem is EmojiLayerData || layerItem is DrawLayerData) .map((layerItem) { if (layerItem is EmojiLayerData) { return EmojiLayer( key: GlobalKey(), layerData: layerItem, onUpdate: onUpdate, ); } else if (layerItem is DrawLayerData) { return DrawLayer( layerData: layerItem, onUpdate: onUpdate, ); } return Container(); }), ...layers.whereType().map((layerItem) { return TextLayer( // key: GlobalKey(), layerData: layerItem, onUpdate: onUpdate, ); }), ], ); } }