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"