FLUTTER ECOSYSTEM

NarekManukyan/story_maker

一個用於建立類似 Instagram 故事的套件。您可使用此套件編輯圖片,並透過添加文字與漸變等其他內容,讓圖片適合製作故事。

story_maker 專案封面
Stars
7
Forks
11
最近推送(UTC)
2026年4月10日
專案狀態
未封存
Narek Manukyan GitHub avatar
GITHUB User

Narek Manukyan ↗

👨‍💻 Flutter Developer & Team Lead | Software & Hardware Engineer | Versatile in Mobile & Hardware Solutions | 🌟 Driving Innovation 🚀

M OneArmenia
語言DartRubySwiftKotlinObjective-C

此儲存庫發佈的套件

使用的依賴

依賴清單 5 項

原始 README

以下為英文專案原文快照,最新內容請造訪 GitHub。

展開 / 收合專案 README

story_maker License: MIT

A package for creating instagram like story, you can use this package to edit images and make it story ready by adding other contents over it like text, stickers, gradients, and color filters.

GIF 1 GIF 2

Getting Started

Add this to your package's pubspec.yaml file:

dependencies:
  story_maker: ^1.2.0

Example

import 'package:story_maker/story_maker.dart';

class _MyAppState extends State<MyApp> {
  File? image;

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text('Story Designer Example'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            ElevatedButton(
              onPressed: () async {
                await [
                  Permission.photos,
                  Permission.storage,
                ].request();
                final picker = ImagePicker();
                await picker
                    .pickImage(source: ImageSource.gallery)
                    .then((file) async {
                  final File editedFile = await Navigator.of(context).push(
                    MaterialPageRoute(
                      builder: (context) => StoryMaker(
                        filePath: file!.path,
                      ),
                    ),
                  );
                  setState(() {
                    image = editedFile;
                  });
                  print('editedFile: ${image!.path}');
                });
              },
              child: const Text('Pick Image'),
            ),
            if (image != null)
              Expanded(
                child: Image.file(image!),
              ),
          ],
        ),
      ),
    );
  }
}

Advanced Usage with Customization
import 'package:story_maker/story_maker.dart';

// Example with custom theme, stickers, and done button
StoryMaker(
  filePath: imagePath,
  theme: StoryMakerTheme.dark(), // or StoryMakerTheme.light()
  customStickers: [
    StickerItem.emoji('🎉'),
    StickerItem.emoji('🔥'),
    StickerItem.image('/path/to/sticker.png'),
  ],
  customFontList: ['Roboto', 'Open Sans', 'Lato'],
  customTextColors: [
    Colors.red,
    Colors.blue,
    Colors.green,
  ],
  customGradients: [
    [Colors.purple, Colors.pink],
    [Colors.blue, Colors.cyan],
  ],
  doneButtonBuilder: (theme, onDone, isLoading) {
    return ElevatedButton(
      onPressed: isLoading ? null : onDone,
      style: ButtonStyle(
        backgroundColor: WidgetStateProperty.all(theme.buttonColor),
      ),
      child: isLoading
          ? CircularProgressIndicator()
          : Text('Save Story', style: TextStyle(color: theme.buttonTextColor)),
    );
  },
)
Available Features
Core Features
  • [x] Image Editing:

    • Image scaling and rotation
    • Pinch-to-zoom and pan gestures
    • Photo view with rotation support
  • [x] Text Editing:

    • Adding text to images with customizable:
      • Font family (with 50+ Google Fonts via google_fonts package)
      • Font size (adjustable slider from 14-74px)
      • Text color (extensive color palette with 20+ default colors)
      • Text background gradients (60+ gradient options)
    • Real-time text preview
    • Drag, rotate, and scale text items
    • Multiple text items support
  • [x] Background Gradients:

    • 60+ pre-built gradient options
    • Custom gradient support via customGradients parameter
    • Gradient selector with visual preview
  • [x] Stickers Support:

    • Emoji stickers (50+ default emojis)
    • Custom image/GIF stickers via StickerItem.image()
    • Customizable sticker list via customStickers parameter
    • Sticker selector with horizontal scrolling interface
    • Drag, rotate, and scale sticker items
  • [x] Color Filters:

    • 8 color filter options: None, Sepia, Grayscale, Vintage, Cool, Warm, Bright, Dark
    • Swipe left/right gestures for quick filter navigation
    • Filter name overlay display when selecting filters
    • Color filter picker with visual preview
    • Real-time filter application
  • [x] Theme Customization:

    • Complete UI theming system via StoryMakerTheme
    • Pre-built dark and light theme variants
    • Customizable colors (background, buttons, icons, text, borders)
    • Customizable border radius and shadows
    • Theme provider system for easy access throughout widget tree
    • Support for custom button styles and decorations
  • [x] Customization Options:

    • Custom done button builder with theme, callback, and loading state access
    • Customizable font lists via customFontList parameter
    • Customizable text color lists via customTextColors parameter
    • Customizable gradient color lists via customGradients parameter
    • Customizable animation duration via animationsDuration parameter
  • [x] User Experience:

    • Haptic feedback on interactions
    • Style name overlay when changing font families
    • Filter name overlay when changing color filters
    • Delete item by dragging to bottom area
    • Smooth animations and transitions
    • Loading state during image export
  • [x] Developer Experience:

    • Barrel files for organized imports
    • Comprehensive documentation
    • Type-safe APIs
    • Backward compatible updates

"Buy Me A Coffee"