v0.2.2stories_editor
這是一個以 Instagram 故事創作者風格建立的套件,可讓您創建包含圖片、文字、貼紙(GIF)和手指繪圖的影像。
這是一個以 Instagram 故事創作者風格建立的套件,可讓您創建包含圖片、文字、貼紙(GIF)和手指繪圖的影像。
{"sdk":"flutter"}^6.0.4^3.0.2^2.0.11^0.14.0^2.0.3^0.1.0^0.0.2^1.0.4^3.0.0^8.1.1^4.2.2^5.6.0{"sdk":"flutter"}^1.0.0以下為英文專案原文快照,最新內容請造訪 GitHub。
if you want to make a ull request you must be using the new "main" branch, the problems with gallery, overflow design were solved and the function to create Gif / mp4 was removed due to performance issues.
This is a package created in the style of the instagram story creator, with which you can create images with images, texts, stickers (Gifs), finger drawing. They can be exported as an image to the gallery or shared directly to social networks.
[✔️] Draggable image
[✔️] Draggable text
[✔️] Draggable Gif/Sticker (giphy API)
[✔️] Gradient container background
[✔️] Finger painting (normal/translucent/neon)
[✔️] Custom colors, gradients and font families
[✔️] Custom gallery picker (own package => gallery_media_picker)
[✔️] Save draft as image
[✔️] Get draft local path uri
[✔️] Text animations => animated_text_kit
[❌] Save draft as a gif / video
[❌] Color filters
If you don't see the images go to the github repository and by the way give me a star :D
showcase gif showcase gif
This package has been tested in Android and ios, some features works on flutter web
Add stories_editor: 0.1.8 to your pubspec.yaml dependencies and then import it.
import 'package:stories_editor/stories_editor.dart';
add uses-permission AndroidMAnifest.xml file
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"
android:maxSdkVersion="31" />
<uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.VIBRATE"/>
add this config to your config.plist
<key>NSPhotoLibraryUsageDescription</key>
<string>Privacy - Photo Library Usage Description</string>
<key>NSMotionUsageDescription</key>
<string>Motion usage description</string>
<key>NSPhotoLibraryAddUsageDescription</key>
<string>NSPhotoLibraryAddUsageDescription</string>
Create a StoriesEditor() widget with the follow params:
StoriesEditor(
giphyKey: '[YOUR GIPHY API KEY]', /// (String) required param
onDone: (String uri){
/// uri is the local path of final render Uint8List
/// here your code
},
colorList: [] /// (List<Color>[]) optional param
gradientColors: [] /// (List<List<Color>>[]) optional param
middleBottomWidget: Container() /// (Widget) optional param, you can add your own logo or text in the bottom tool
fontFamilyList: [] /// (List<String>) optional param
isCustomFontList: '' /// (bool) if you use a own font list set value to "true"
onDoneButtonStyle: Container() /// (Widget) optional param, you can create your own button style
onBackPress: /// (Future<bool>) optional param, here you can add yor own style dialog
editorBackgroundColor: /// (Color) optional param, you can define your own background editor color
galleryThumbnailQuality: /// (int = 200) optional param, you can set the gallery thumbnail quality (higher is better but reduce the performance)
);
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import 'package:share_plus/share_plus.dart';
import 'package:stories_editor/stories_editor.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter stories editor Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: const Example(),
);
}
}
class Example extends StatefulWidget {
const Example({Key? key}) : super(key: key);
@override
State<Example> createState() => _ExampleState();
}
class _ExampleState extends State<Example> {
@override
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: Colors.black,
resizeToAvoidBottomInset: false,
body: Center(
child: ElevatedButton(
onPressed: (){
Navigator.push(context, MaterialPageRoute(builder: (context) => StoriesEditor(
giphyKey: '[HERE YOUR API KEY]',
onDone: (uri){
debugPrint(uri);
Share.shareFiles([uri]);
},
))
);
},
child: const Text('Open Stories Editor'),
),
)
);
}
}
initial view
https://github.com/camilo1498/stories_editor/blob/main/stories%20editor%20screenshots/1.jpg https://github.com/camilo1498/stories_editor/blob/main/stories%20editor%20screenshots/2.jpg
Custom image picker made with Photo_manager package
https://github.com/camilo1498/stories_editor/blob/main/stories%20editor%20screenshots/3.jpg https://github.com/camilo1498/stories_editor/blob/main/stories%20editor%20screenshots/4.jpg
Gradient background taking image color pixel
https://github.com/camilo1498/stories_editor/blob/main/stories%20editor%20screenshots/20.jpg https://github.com/camilo1498/stories_editor/blob/main/stories%20editor%20screenshots/21.jpg https://github.com/camilo1498/stories_editor/blob/main/stories%20editor%20screenshots/22.jpg https://github.com/camilo1498/stories_editor/blob/main/stories%20editor%20screenshots/23.jpg
Exit Dialog
https://github.com/camilo1498/stories_editor/blob/main/stories%20editor%20screenshots/5.jpg
Custom Gif Picker made with a fork of Giphy_picker package
https://github.com/camilo1498/stories_editor/blob/main/stories%20editor%20screenshots/7.jpg https://github.com/camilo1498/stories_editor/blob/main/stories%20editor%20screenshots/8.jpg https://github.com/camilo1498/stories_editor/blob/main/stories%20editor%20screenshots/9.jpg
Custom finger Drawing made with perfect_freehand package
https://github.com/camilo1498/stories_editor/blob/main/stories%20editor%20screenshots/14.jpg https://github.com/camilo1498/stories_editor/blob/main/stories%20editor%20screenshots/24.jpg
Text Editor
https://github.com/camilo1498/stories_editor/blob/main/stories%20editor%20screenshots/10.jpg https://github.com/camilo1498/stories_editor/blob/main/stories%20editor%20screenshots/11.jpg https://github.com/camilo1498/stories_editor/blob/main/stories%20editor%20screenshots/12.jpg
All features together
https://github.com/camilo1498/stories_editor/blob/main/stories%20editor%20screenshots/17.jpg
Share to social networks made with share_plus package
https://github.com/camilo1498/stories_editor/blob/main/stories%20editor%20screenshots/19.jpg
Saved image
https://github.com/camilo1498/stories_editor/blob/main/stories%20editor%20screenshots/18.jpg