miroru

miroru

Features

miroru story editor is built with an emphasis on ease of theme customization and a modern, extensible architecture. It adheres to Material Design guidelines using ThemeData for all theming, simplifying the process of modifying the app's look and feel.

Intelligent Theme Adaptation Automatically adjusts the theme between dark and light modes based on the brightness of the selected background image, enhancing user experience and readability.

Quick Theme Customization Thanks to the utilization of ThemeData, changing themes to match your preferences or brand identity is straightforward and efficient.

Designed for Flexibility Our architecture ensures easy customization and future expansion, keeping miroru story editor at the forefront of technology advancements.

Multilingual Support miroru story editor supports six languages: English, Japanese, Chinese, Korean, Russian, and Hindi, catering to a diverse user base.

Support Localization

support Language
English
日本語
中文
한국어
Русский
हिन्दी

Getting started

  $ flutter pub add miroru_story_editor

Usage

FilledButton(
  onPressed: () async {
    if (Platform.isAndroid) {
      final deviceInfo = DeviceInfoPlugin();
      final androidInfo = await deviceInfo.androidInfo;
      if (androidInfo.version.sdkInt >= 33) {
        await Permission.photos.request();
      } else {
        await Permission.storage.request();
      }
    } else {
      await Permission.photos.request();
    }

    final file = await ImagePicker().pickImage(
      source: ImageSource.gallery,
    );
    if (file == null) {
      return;
    }

    if (!context.mounted) {
      return;
    }

    final imageData = await showMiroruStoryEditor(
      context,
      imageFile: File(file.path),
    );

    if (imageData == null) {
      return;
    }

      setState(() {
        image = imageData;
      });
    },
    child: const Text('open miroru story editor'),
  ),

Change Theme

you can use #ThemeDataDto

  await showMiroruStoryEditor(
      context,
      imageFile: File(file.path),
      themeDataDto: ThemeDataDto(
        themeLight: yourLightTheme,
        themeDark: yourDarkTheme,
      ),
  );

Change Localization

  await showMiroruStoryEditor(
      context,
      imageFile: File(file.path),
      languageType: LanguageType.ja
  );

Libraries

model/entities/decoration/decorations/background_image/background_image
presentation/views/background_image/background_image_blur_view
presentation/views/background_image/background_image_view
model/enums/brush_type
presentation/views/decoration/handler/build_decoration_handler_view
util/center_image_matrix
presentation/widgets/custom/center_line_x_widget
presentation/widgets/custom/center_line_y_widget
extensions/color_extension
presentation/widgets/decoration/common/color_list_selector_widget
presentation/widgets/decoration/common/color_picker_icon
presentation/res/color_schemes.g
presentation/widgets/custom/cone_widget
extensions/context_extension
presentation/res/decorating_theme
model/use_cases/theme/theme_data/decorating_theme_data
presentation/widgets/decoration/common/decoration_delete_widget
model/entities/decoration/decorations/emoji/decoration_emoji
model/entities/decoration/decorations/decoration_item
model/entities/decoration/decoration_palette/decoration_palette
model/use_cases/decoration/decoration_palette_state
model/entities/decoration/decorations/text/decoration_text
model/enums/decoration_type
presentation/views/decoration/common/decoration_view
model/use_cases/palette/editing_text_item_state
model/use_cases/theme/theme_data/editor_theme_data
model/use_cases/theme/common/editor_theme_mode
model/use_cases/share/export_image
model/use_cases/background/fetch_blur_hash
presentation/widgets/decoration/text/font_list_selector_widget
model/enums/font_type
util/get_image_size
util/get_theme_from_color
util/get_theme_from_image
presentation/views/palette/header_view
util/is_moving_center
util/is_moving_delete_area
l10n/l10n
l10n/l10n_en
l10n/l10n_hi
l10n/l10n_ja
l10n/l10n_ko
l10n/l10n_ru
l10n/l10n_zh
model/enums/language_type
presentation/widgets/paint/line_painter
miroru_story_editor
model/entities/paint/paint_line/paint_line
model/use_cases/paint/paint_lines_state
model/entities/paint/paint_palette/paint_palette
presentation/views/paint/common/paint_palette_edit_view
model/use_cases/paint/paint_palette_state
presentation/views/paint/common/paint_palette_view
presentation/views/paint/common/paint_tool_header_view
presentation/res/painting_theme
model/use_cases/theme/theme_data/painting_theme_dart
model/entities/palette/palette
model/use_cases/palette/palette_key
presentation/pages/palette_page
model/use_cases/palette/palette_state
presentation/views/palette/palette_view
model/entities/decoration/render_item/render_item
presentation/widgets/decoration/common/render_item_widget
presentation/widgets/decoration/text/render_text_widget
model/use_cases/image/save_image
presentation/bottom_sheets/show_select_emoji_sheet
presentation/bottom_sheets/common/show_sliver_drag_sheet
extensions/string_extension
presentation/views/decoration/common/text_editing_view
presentation/widgets/decoration/text/text_size_slider_widget
presentation/views/decoration/text/text_tool_header_view
presentation/res/theme
model/use_cases/theme/common/theme_data_dto
model/entities/theme/theme_data_dto
presentation/custom_hooks/use_debounce
presentation/custom_hooks/use_global_key
util/vibration