@@ -38,6 +38,12 @@ class FileHelper {
3838 return 'data_${timestamp }_$uniqueId .json' ;
3939 }
4040
41+ static String _generateFramesFilename () {
42+ final String uniqueId = uuid.v4 ();
43+ final String timestamp = DateTime .now ().millisecondsSinceEpoch.toString ();
44+ return 'frames_${timestamp }_$uniqueId .json' ;
45+ }
46+
4147 // Add a new image to the cache
4248 void addToCache (Uint8List imageData, String filename) {
4349 int key;
@@ -189,6 +195,31 @@ class FileHelper {
189195 await _addImageDataToCache (image, filename);
190196 }
191197
198+ Future <void > saveFrameAnimation (List <List <List <int >>> frames) async {
199+ final filename = _generateFramesFilename ();
200+ final jsonData = jsonEncode (frames);
201+ await _writeToFile (filename, jsonData);
202+ }
203+
204+ Future <void > saveFrameAnimationWithName (
205+ String name, List <List <List <int >>> frames, int speed) async {
206+ // Sanitize name for filesystem
207+ String sanitized = name
208+ .trim ()
209+ .replaceAll (RegExp (r"[^A-Za-z0-9 _.-]" ), "" )
210+ .replaceAll (" " , "_" );
211+ if (sanitized.isEmpty) {
212+ sanitized = "untitled" ;
213+ }
214+ final filename = 'frames_${sanitized }.json' ;
215+ final Map <String , dynamic > payload = {
216+ 'frames' : frames,
217+ 'speed' : speed,
218+ };
219+ final jsonData = jsonEncode (payload);
220+ await _writeToFile (filename, jsonData);
221+ }
222+
192223 Future <dynamic > readFromFile (String filename) async {
193224 try {
194225 final path = await _getFilePath (filename);
0 commit comments