editable_image 2.0.0 editable_image: ^2.0.0 copied to clipboard
Flutter package for creating a fully customizable and editable image widget.
Editable Image | Flutter Package #
Flutter package for creating a fully customizable and editable image widget. The package has been written solely in Dart Language.
Features #
A powerful and fully customizable widget. It provides a custom widget to save time.
For example, almost in every profile settings
interface, etc., there is a profile image. Instead of writing from scratch, this widget can be used and can save a lot of time.
Getting started #
Let's take a look at how to implement EditableImage
to fastly create user interfaces for profile picture edit, etc.
First, add following line to pubspec.yaml
:
editable_image: ^2.0.0
Second, import EditableImage
:
import 'package:editable_image/editable_image.dart';
Lastly, make platform-specific setups by applying the following instructions.
Android Setup #
- The minimum required SDK version is
21
. Therefore, please find the following line insideandroid/app/build.gradle
and modify it:
compileSdkVersion 33
..
..
..
minSdkVersion 21
targetSdkVersion 33
- Please upgrade the Kotlin version (ext.kotlin_version) to
1.7.0
or the latest version. To do that, find the following line insideandroid/build.gradle
and modify it:
ext.kotlin_version = '1.7.0'
- Please upgrade the Gradle version (ext.kotlin_version) to
6.8.3
or the latest version but lower than7.0.0
. To do that, find the following line insideandroid/gradle/wrapper/gradle-wrapper.properties
and modify it:
distributionUrl=https\://services.gradle.org/distributions/gradle-6.8.3-all.zip
- Please go to your project folder and add
android:exported="true"
to AndroidManifest.xml file
<activity
android:name=".MainActivity"
android:exported="true"
android:launchMode="singleTop"
android:theme="@style/LaunchTheme"
</activity>
- Required permissions:
READ_EXTERNAL_STORAGE
. Please modifyandroid/app/src/main/AndroidManifest.xml
and update accordingly:
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
- I recommand you add
android:requestLegacyExternalStorage="true"
to AndroidManifest.xml. Therefore, please modifyandroid/app/src/main/AndroidManifest.xml
and add the following line insideapplication
:
<application android:requestLegacyExternalStorage="true"</application>
If you found some warning logs with Glide appearing, then the main project needs an implementation of AppGlideModule
. See Generated API.
iOS Setup #
- Platform version must be at least 9.0. Please modify
ios/Podfile
and update accordingly:
platform :ios, '11.0'
- Add the following lines to
ios/Runner/Info.plist
:
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
<key>NSPhotoLibraryUsageDescription</key>
<string>Put here your permission description.</string>
macOS Setup #
- Platform version must be at least 10.15. Please modify
macos/Podfile
and update accordingly:
platform :osx, '10.15'
-
Please set the minimum deployment target to 10.15. Use XCode to open
macos/Runner.xcworkspace
: -
Follow the iOS instructions and modify
ios/Runner/Info.plist
accordingly.
Usage #
Basic usage example:
main.dart
// A simple usage of EditableImage.
// This method gets called when trying to change an image.
void _directUpdateImage(File? file) async {
if (file == null) return;
setState(() {
_profilePicFile = file;
});
}
EditableImage(
// Define the method that will run on the change process of the image.
onChange: (file) => _directUpdateImage(file),
// Define the source of the image.
image: _profilePicFile != null
? Image.file(_profilePicFile!, fit: BoxFit.cover)
: null,
// Define the size of EditableImage.
size: 150.0,
// Define the Theme of image picker.
imagePickerTheme: ThemeData(
// Define the default brightness and colors.
primaryColor: Colors.white,
shadowColor: Colors.transparent,
backgroundColor: Colors.white70,
iconTheme: const IconThemeData(color: Colors.black87),
// Define the default font family.
fontFamily: 'Georgia',
),
// Define the border of the image if needed.
imageBorder: Border.all(color: Colors.black87, width: 2.0),
// Define the border of the icon if needed.
editIconBorder: Border.all(color: Colors.black87, width: 2.0),
),
Example #
More examples can be found in /example
folder on GitHub.
User Profile 1 - an example of basic implementation of EditableImage
. Simple project that simulates user profile edit screen.
User Profile 2 - an example of implementation of EditableImage
. Simple project that simulates user profile edit screen.
Additional information #
This package has been written solely in Dart Language yet it has the wechat_assets_picker as a dependency. Therefore, EditableImage
currently supports only Android
, iOS
, and macOS
platforms. In the future, other platform supports may be added.
For more information please visit GitHub.
Feature requests and bugs #
Please file feature requests and bugs at the issue tracker.