Skip to content

Commit 1c18576

Browse files
author
Your Name
committed
added a custom frame creation option
1 parent 6abc751 commit 1c18576

File tree

5 files changed

+721
-9
lines changed

5 files changed

+721
-9
lines changed

lib/bademagic_module/utils/file_helper.dart

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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);

lib/main.dart

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@ import 'package:badgemagic/providers/getitlocator.dart';
22
import 'package:badgemagic/providers/imageprovider.dart';
33
import 'package:badgemagic/view/about_us_screen.dart';
44
import 'package:badgemagic/view/draw_badge_screen.dart';
5+
import 'package:badgemagic/view/create_frames_screen.dart';
6+
import 'package:badgemagic/view/saved_frames_screen.dart';
57
import 'package:badgemagic/view/homescreen.dart';
68
import 'package:badgemagic/view/save_badge_screen.dart';
79
import 'package:badgemagic/view/saved_clipart.dart';
@@ -51,6 +53,8 @@ class MyApp extends StatelessWidget {
5153
'/savedClipart': (context) => const SavedClipart(),
5254
'/aboutUs': (context) => const AboutUsScreen(),
5355
'/settings': (context) => const SettingsScreen(),
56+
'/createFrames': (context) => const CreateFramesScreen(),
57+
'/savedFrames': (context) => const SavedFramesScreen(),
5458
},
5559
);
5660
},

0 commit comments

Comments
 (0)