Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 3 additions & 2 deletions .flutter-plugins
Original file line number Diff line number Diff line change
@@ -1,2 +1,3 @@
image_cropper=F:\\book\\AndroidDevelopmetKit\\flutter_sdk\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\image_cropper-0.0.4\\
image_picker=F:\\book\\AndroidDevelopmetKit\\flutter_sdk\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\image_picker-0.4.6\\
# This is a generated file; do not edit or check into version control.
image_cropper=D:\\Users\\Hiuwin\\AppData\\Local\\Pub\\Cache\\hosted\\pub.dev\\image_cropper-0.0.9\\
image_picker=D:\\Users\\Hiuwin\\AppData\\Local\\Pub\\Cache\\hosted\\pub.dev\\image_picker-0.4.12+1\\
1 change: 1 addition & 0 deletions .flutter-plugins-dependencies
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"info":"This is a generated file; do not edit or check into version control.","plugins":{"ios":[{"name":"image_cropper","path":"D:\\\\Users\\\\Hiuwin\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\image_cropper-0.0.9\\\\","native_build":true,"dependencies":[]},{"name":"image_picker","path":"D:\\\\Users\\\\Hiuwin\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\image_picker-0.4.12+1\\\\","native_build":true,"dependencies":[]}],"android":[{"name":"image_cropper","path":"D:\\\\Users\\\\Hiuwin\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\image_cropper-0.0.9\\\\","native_build":true,"dependencies":[]},{"name":"image_picker","path":"D:\\\\Users\\\\Hiuwin\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\image_picker-0.4.12+1\\\\","native_build":true,"dependencies":[]}],"macos":[],"linux":[],"windows":[],"web":[]},"dependencyGraph":[{"name":"image_cropper","dependencies":[]},{"name":"image_picker","dependencies":[]}],"date_created":"2023-03-30 19:51:37.930856","version":"3.7.3"}
11 changes: 4 additions & 7 deletions android/app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -7,15 +7,12 @@ if (localPropertiesFile.exists()) {
}

def flutterRoot = localProperties.getProperty('flutter.sdk')
if (flutterRoot == null) {
throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.")
}

apply plugin: 'com.android.application'
apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"

android {
compileSdkVersion 27
compileSdkVersion 33

lintOptions {
disable 'InvalidPackage'
Expand All @@ -25,9 +22,9 @@ android {
// TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
applicationId "com.libs.flutterimageppicker"
minSdkVersion 16
targetSdkVersion 27
versionCode 1
versionName "1.0"
targetSdkVersion flutter.targetSdkVersion
versionCode 2
versionName "2.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}

Expand Down
3 changes: 3 additions & 0 deletions android/app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,9 @@
android:name="com.yalantis.ucrop.UCropActivity"
android:screenOrientation="portrait"
android:theme="@style/Theme.AppCompat.Light.NoActionBar"/>
<meta-data
android:name="flutterEmbedding"
android:value="2" />

</application>
</manifest>
13 changes: 13 additions & 0 deletions ios/Flutter/flutter_export_environment.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
#!/bin/sh
# This is a generated file; do not edit or check into version control.
export "FLUTTER_ROOT=C:\src\flutter"
export "FLUTTER_APPLICATION_PATH=D:\Users\Hiuwin\Desktop\flutter_image_ppicker"
export "COCOAPODS_PARALLEL_CODE_SIGN=true"
export "FLUTTER_TARGET=lib\main.dart"
export "FLUTTER_BUILD_DIR=build"
export "FLUTTER_BUILD_NAME=1.0.0"
export "FLUTTER_BUILD_NUMBER=1"
export "DART_OBFUSCATION=false"
export "TRACK_WIDGET_CREATION=true"
export "TREE_SHAKE_ICONS=false"
export "PACKAGE_CONFIG=.dart_tool/package_config.json"
30 changes: 10 additions & 20 deletions lib/home_screen.dart
Original file line number Diff line number Diff line change
Expand Up @@ -5,19 +5,18 @@ import 'package:flutter_image_ppicker/image_picker_handler.dart';
import 'package:flutter_image_ppicker/image_picker_dialog.dart';

class HomeScreen extends StatefulWidget {
HomeScreen({Key key, this.title}) : super(key: key);
HomeScreen({Key? key, required this.title}) : super(key: key);
final String title;

@override
_HomeScreenState createState() => new _HomeScreenState();
}

class _HomeScreenState extends State<HomeScreen>
with TickerProviderStateMixin,ImagePickerListener{

File _image;
AnimationController _controller;
ImagePickerHandler imagePicker;
with TickerProviderStateMixin, ImagePickerListener {
late File _image;
late AnimationController _controller;
late ImagePickerHandler imagePicker;

@override
void initState() {
Expand All @@ -27,9 +26,8 @@ class _HomeScreenState extends State<HomeScreen>
duration: const Duration(milliseconds: 500),
);

imagePicker=new ImagePickerHandler(this,_controller);
imagePicker = new ImagePickerHandler(this, _controller);
imagePicker.init();

}

@override
Expand All @@ -38,16 +36,13 @@ class _HomeScreenState extends State<HomeScreen>
super.dispose();
}



@override
Widget build(BuildContext context) {
return new Scaffold(
appBar: new AppBar(
title: new Text(widget.title,
style: new TextStyle(
color: Colors.white
),
title: new Text(
widget.title,
style: new TextStyle(color: Colors.white),
),
),
body: new GestureDetector(
Expand All @@ -56,7 +51,6 @@ class _HomeScreenState extends State<HomeScreen>
child: _image == null
? new Stack(
children: <Widget>[

new Center(
child: new CircleAvatar(
radius: 80.0,
Expand All @@ -66,7 +60,6 @@ class _HomeScreenState extends State<HomeScreen>
new Center(
child: new Image.asset("assets/photo_camera.png"),
),

],
)
: new Container(
Expand All @@ -78,15 +71,13 @@ class _HomeScreenState extends State<HomeScreen>
image: new ExactAssetImage(_image.path),
fit: BoxFit.cover,
),
border:
Border.all(color: Colors.red, width: 5.0),
border: Border.all(color: Colors.red, width: 5.0),
borderRadius:
new BorderRadius.all(const Radius.circular(80.0)),
),
),
),
),

);
}

Expand All @@ -96,5 +87,4 @@ class _HomeScreenState extends State<HomeScreen>
this._image = _image;
});
}

}
27 changes: 14 additions & 13 deletions lib/image_picker_dialog.dart
Original file line number Diff line number Diff line change
Expand Up @@ -4,15 +4,17 @@ import 'package:flutter/material.dart';
import 'package:flutter_image_ppicker/image_picker_handler.dart';

class ImagePickerDialog extends StatelessWidget {
late ImagePickerHandler _listener;
late AnimationController _controller;
late BuildContext context;

ImagePickerHandler _listener;
AnimationController _controller;
BuildContext context;
// ImagePickerDialog(this._listener, this._controller);

ImagePickerDialog(this._listener, this._controller);
late Animation<double> _drawerContentsOpacity;
late Animation<Offset> _drawerDetailsPosition;

Animation<double> _drawerContentsOpacity;
Animation<Offset> _drawerDetailsPosition;
ImagePickerDialog(ImagePickerHandler imagePickerHandler,
AnimationController animationController);

void initState() {
_drawerContentsOpacity = new CurvedAnimation(
Expand All @@ -38,12 +40,12 @@ class ImagePickerDialog extends StatelessWidget {
showDialog(
context: context,
builder: (BuildContext context) => new SlideTransition(
position: _drawerDetailsPosition,
child: new FadeTransition(
opacity: new ReverseAnimation(_drawerContentsOpacity),
child: this,
),
),
position: _drawerDetailsPosition,
child: new FadeTransition(
opacity: new ReverseAnimation(_drawerContentsOpacity),
child: this,
),
),
);
}

Expand Down Expand Up @@ -137,5 +139,4 @@ class ImagePickerDialog extends StatelessWidget {
);
return loginBtn;
}

}
28 changes: 13 additions & 15 deletions lib/image_picker_handler.dart
Original file line number Diff line number Diff line change
Expand Up @@ -7,42 +7,40 @@ import 'package:image_cropper/image_cropper.dart';
import 'package:image_picker/image_picker.dart';

class ImagePickerHandler {
ImagePickerDialog imagePicker;
AnimationController _controller;
ImagePickerListener _listener;
ImagePickerDialog? imagePicker;
AnimationController? _controller;
ImagePickerListener? _listener;

ImagePickerHandler(this._listener, this._controller);

openCamera() async {
imagePicker.dismissDialog();
imagePicker!.dismissDialog();
var image = await ImagePicker.pickImage(source: ImageSource.camera);
cropImage(image);
cropImage(image as File);
}

openGallery() async {
imagePicker.dismissDialog();
imagePicker!.dismissDialog();
var image = await ImagePicker.pickImage(source: ImageSource.gallery);
cropImage(image);
cropImage(image as File);
}

void init() {
imagePicker = new ImagePickerDialog(this, _controller);
imagePicker.initState();
imagePicker = new ImagePickerDialog(this, _controller!);
imagePicker!.initState();
}

Future cropImage(File image) async {
File croppedFile = await ImageCropper.cropImage(
File croppedFile = (await ImageCropper.cropImage(
sourcePath: image.path,
ratioX: 1.0,
ratioY: 1.0,
maxWidth: 512,
maxHeight: 512,
);
_listener.userImage(croppedFile);
)) as File;
_listener!.userImage(croppedFile);
}

showDialog(BuildContext context) {
imagePicker.getImage(context);
imagePicker!.getImage(context);
}
}

Expand Down
51 changes: 7 additions & 44 deletions pubspec.yaml
Original file line number Diff line number Diff line change
@@ -1,58 +1,21 @@
name: flutter_image_ppicker
description: A new Flutter application.

environment:
sdk: '>=2.18.2 <3.0.0'
dependencies:
flutter:
sdk: flutter

cupertino_icons: ^0.1.2
image_picker: "^0.4.5"
image_picker: ^0.4.5
image_cropper: ^0.0.4
cupertino_icons: ^0.1.2

dev_dependencies:
flutter_test:
sdk: flutter


# For information on the generic Dart part of this file, see the
# following page: https://www.dartlang.org/tools/pub/pubspec

# The following section is specific to Flutter.
flutter_lints: ^2.0.1
flutter:

# The following line ensures that the Material Icons font is
# included with your application, so that you can use the icons in
# the material Icons class.
uses-material-design: true
assets:
- assets/photo_camera.png
# To add assets to your application, add an assets section, like this:
# assets:
# - images/a_dot_burr.jpeg
# - images/a_dot_ham.jpeg

# An image asset can refer to one or more resolution-specific "variants", see
# https://flutter.io/assets-and-images/#resolution-aware.

# For details regarding adding assets from package dependencies, see
# https://flutter.io/assets-and-images/#from-packages

# To add custom fonts to your application, add a fonts section here,
# in this "flutter" section. Each entry in this list should have a
# "family" key with the font family name, and a "fonts" key with a
# list giving the asset and other descriptors for the font. For
# example:
# fonts:
# - family: Schyler
# fonts:
# - asset: fonts/Schyler-Regular.ttf
# - asset: fonts/Schyler-Italic.ttf
# style: italic
# - family: Trajan Pro
# fonts:
# - asset: fonts/TrajanPro.ttf
# - asset: fonts/TrajanPro_Bold.ttf
# weight: 700
#
# For details regarding fonts from package dependencies,
# see https://flutter.io/custom-fonts/#from-packages
assets:
- assets/photo_camera.png