import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'dart:ui' as ui; import 'dart:io'; class IconGenerator { static Future generateAppIcons() async { // Sizes untuk berbagai platform final sizes = [ 16, 32, 48, 64, 128, 256, 512, 1024, // Berbagai ukuran ]; for (final size in sizes) { await _generateIcon(size); } } static Future _generateIcon(int size) async { // Create a recorder to record drawing commands final recorder = ui.PictureRecorder(); final canvas = Canvas(recorder); // Background final backgroundPaint = Paint() ..color = Colors.blue ..style = PaintingStyle.fill; canvas.drawRRect( RRect.fromLTRBR( 0, 0, size.toDouble(), size.toDouble(), Radius.circular(size * 0.1), ), backgroundPaint, ); // API Icon shape final iconPaint = Paint() ..color = Colors.white ..style = PaintingStyle.fill; final iconSize = size * 0.6; final iconOffset = size * 0.2; // Draw simple API icon (circles and lines) // Center circle canvas.drawCircle( Offset(size * 0.5, size * 0.5), iconSize * 0.15, iconPaint, ); // Side circles canvas.drawCircle( Offset(iconOffset + iconSize * 0.2, size * 0.5), iconSize * 0.1, iconPaint, ); canvas.drawCircle( Offset(iconOffset + iconSize * 0.8, size * 0.5), iconSize * 0.1, iconPaint, ); // Connecting lines final linePaint = Paint() ..color = Colors.white ..strokeWidth = iconSize * 0.05 ..style = PaintingStyle.stroke; canvas.drawLine( Offset(iconOffset + iconSize * 0.3, size * 0.5), Offset(iconOffset + iconSize * 0.35, size * 0.5), linePaint, ); canvas.drawLine( Offset(iconOffset + iconSize * 0.65, size * 0.5), Offset(iconOffset + iconSize * 0.7, size * 0.5), linePaint, ); // End recording final picture = recorder.endRecording(); final image = await picture.toImage(size, size); final byteData = await image.toByteData(format: ui.ImageByteFormat.png); if (byteData != null) { final file = File('assets/icons/app_icon_${size}x$size.png'); await file.writeAsBytes(byteData.buffer.asUint8List()); print('Generated icon: ${file.path}'); } } // Simple icon untuk development static Widget buildSimpleApiIcon({double size = 24, Color? color}) { return Container( width: size, height: size, decoration: BoxDecoration( color: color ?? Colors.blue, borderRadius: BorderRadius.circular(size * 0.1), ), child: Stack( alignment: Alignment.center, children: [ // Center dot Container( width: size * 0.15, height: size * 0.15, decoration: const BoxDecoration( color: Colors.white, shape: BoxShape.circle, ), ), // Left dot Positioned( left: size * 0.2, child: Container( width: size * 0.1, height: size * 0.1, decoration: const BoxDecoration( color: Colors.white, shape: BoxShape.circle, ), ), ), // Right dot Positioned( right: size * 0.2, child: Container( width: size * 0.1, height: size * 0.1, decoration: const BoxDecoration( color: Colors.white, shape: BoxShape.circle, ), ), ), // Connecting lines Positioned( left: size * 0.3, child: Container( width: size * 0.05, height: size * 0.02, color: Colors.white, ), ), Positioned( right: size * 0.3, child: Container( width: size * 0.05, height: size * 0.02, color: Colors.white, ), ), ], ), ); } }