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