Skip to content

Commit 84afba7

Browse files
[image_picker] Migrate Android to Pigeon (#3476)
[image_picker] Migrate Android to Pigeon
1 parent f5687b2 commit 84afba7

17 files changed

+2123
-1417
lines changed

packages/image_picker/image_picker_android/CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
## 0.8.6+3
2+
3+
* Switches to Pigeon for internal implementation.
4+
15
## 0.8.6+2
26

37
* Fixes null pointer exception in `saveResult`.

packages/image_picker/image_picker_android/android/src/main/java/io/flutter/plugins/imagepicker/ImageOutputOptions.java

Lines changed: 0 additions & 29 deletions
This file was deleted.

packages/image_picker/image_picker_android/android/src/main/java/io/flutter/plugins/imagepicker/ImagePickerCache.java

Lines changed: 27 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -21,14 +21,15 @@ public enum CacheType {
2121
VIDEO
2222
}
2323

24-
static final String MAP_KEY_PATH = "path";
2524
static final String MAP_KEY_PATH_LIST = "pathList";
2625
static final String MAP_KEY_MAX_WIDTH = "maxWidth";
2726
static final String MAP_KEY_MAX_HEIGHT = "maxHeight";
2827
static final String MAP_KEY_IMAGE_QUALITY = "imageQuality";
29-
private static final String MAP_KEY_TYPE = "type";
30-
private static final String MAP_KEY_ERROR_CODE = "errorCode";
31-
private static final String MAP_KEY_ERROR_MESSAGE = "errorMessage";
28+
static final String MAP_KEY_TYPE = "type";
29+
static final String MAP_KEY_ERROR = "error";
30+
31+
private static final String MAP_TYPE_VALUE_IMAGE = "image";
32+
private static final String MAP_TYPE_VALUE_VIDEO = "video";
3233

3334
private static final String FLUTTER_IMAGE_PICKER_IMAGE_PATH_KEY =
3435
"flutter_image_picker_image_path";
@@ -50,7 +51,7 @@ public enum CacheType {
5051
@VisibleForTesting
5152
static final String SHARED_PREFERENCES_NAME = "flutter_image_picker_shared_preference";
5253

53-
private SharedPreferences prefs;
54+
private final SharedPreferences prefs;
5455

5556
ImagePickerCache(Context context) {
5657
prefs = context.getSharedPreferences(SHARED_PREFERENCES_NAME, Context.MODE_PRIVATE);
@@ -59,10 +60,10 @@ public enum CacheType {
5960
void saveType(CacheType type) {
6061
switch (type) {
6162
case IMAGE:
62-
setType("image");
63+
setType(MAP_TYPE_VALUE_IMAGE);
6364
break;
6465
case VIDEO:
65-
setType("video");
66+
setType(MAP_TYPE_VALUE_VIDEO);
6667
break;
6768
}
6869
}
@@ -71,16 +72,17 @@ private void setType(String type) {
7172
prefs.edit().putString(SHARED_PREFERENCE_TYPE_KEY, type).apply();
7273
}
7374

74-
void saveDimensionWithOutputOptions(ImageOutputOptions options) {
75+
void saveDimensionWithOutputOptions(Messages.ImageSelectionOptions options) {
7576
SharedPreferences.Editor editor = prefs.edit();
76-
if (options.maxWidth != null) {
77-
editor.putLong(SHARED_PREFERENCE_MAX_WIDTH_KEY, Double.doubleToRawLongBits(options.maxWidth));
77+
if (options.getMaxWidth() != null) {
78+
editor.putLong(
79+
SHARED_PREFERENCE_MAX_WIDTH_KEY, Double.doubleToRawLongBits(options.getMaxWidth()));
7880
}
79-
if (options.maxHeight != null) {
81+
if (options.getMaxHeight() != null) {
8082
editor.putLong(
81-
SHARED_PREFERENCE_MAX_HEIGHT_KEY, Double.doubleToRawLongBits(options.maxHeight));
83+
SHARED_PREFERENCE_MAX_HEIGHT_KEY, Double.doubleToRawLongBits(options.getMaxHeight()));
8284
}
83-
editor.putInt(SHARED_PREFERENCE_IMAGE_QUALITY_KEY, options.quality);
85+
editor.putInt(SHARED_PREFERENCE_IMAGE_QUALITY_KEY, options.getQuality().intValue());
8486
editor.apply();
8587
}
8688

@@ -115,35 +117,37 @@ void clear() {
115117
}
116118

117119
Map<String, Object> getCacheMap() {
118-
119120
Map<String, Object> resultMap = new HashMap<>();
120-
ArrayList<String> pathList = new ArrayList<>();
121121
boolean hasData = false;
122122

123123
if (prefs.contains(FLUTTER_IMAGE_PICKER_IMAGE_PATH_KEY)) {
124124
final Set<String> imagePathList =
125125
prefs.getStringSet(FLUTTER_IMAGE_PICKER_IMAGE_PATH_KEY, null);
126126
if (imagePathList != null) {
127-
pathList.addAll(imagePathList);
127+
ArrayList<String> pathList = new ArrayList<>(imagePathList);
128128
resultMap.put(MAP_KEY_PATH_LIST, pathList);
129129
hasData = true;
130130
}
131131
}
132132

133133
if (prefs.contains(SHARED_PREFERENCE_ERROR_CODE_KEY)) {
134-
final String errorCodeValue = prefs.getString(SHARED_PREFERENCE_ERROR_CODE_KEY, "");
135-
resultMap.put(MAP_KEY_ERROR_CODE, errorCodeValue);
134+
final Messages.CacheRetrievalError.Builder error = new Messages.CacheRetrievalError.Builder();
135+
error.setCode(prefs.getString(SHARED_PREFERENCE_ERROR_CODE_KEY, ""));
136136
hasData = true;
137137
if (prefs.contains(SHARED_PREFERENCE_ERROR_MESSAGE_KEY)) {
138-
final String errorMessageValue = prefs.getString(SHARED_PREFERENCE_ERROR_MESSAGE_KEY, "");
139-
resultMap.put(MAP_KEY_ERROR_MESSAGE, errorMessageValue);
138+
error.setMessage(prefs.getString(SHARED_PREFERENCE_ERROR_MESSAGE_KEY, ""));
140139
}
140+
resultMap.put(MAP_KEY_ERROR, error.build());
141141
}
142142

143143
if (hasData) {
144144
if (prefs.contains(SHARED_PREFERENCE_TYPE_KEY)) {
145145
final String typeValue = prefs.getString(SHARED_PREFERENCE_TYPE_KEY, "");
146-
resultMap.put(MAP_KEY_TYPE, typeValue);
146+
resultMap.put(
147+
MAP_KEY_TYPE,
148+
typeValue.equals(MAP_TYPE_VALUE_VIDEO)
149+
? Messages.CacheRetrievalType.VIDEO
150+
: Messages.CacheRetrievalType.IMAGE);
147151
}
148152
if (prefs.contains(SHARED_PREFERENCE_MAX_WIDTH_KEY)) {
149153
final long maxWidthValue = prefs.getLong(SHARED_PREFERENCE_MAX_WIDTH_KEY, 0);
@@ -153,12 +157,8 @@ Map<String, Object> getCacheMap() {
153157
final long maxHeightValue = prefs.getLong(SHARED_PREFERENCE_MAX_HEIGHT_KEY, 0);
154158
resultMap.put(MAP_KEY_MAX_HEIGHT, Double.longBitsToDouble(maxHeightValue));
155159
}
156-
if (prefs.contains(SHARED_PREFERENCE_IMAGE_QUALITY_KEY)) {
157-
final int imageQuality = prefs.getInt(SHARED_PREFERENCE_IMAGE_QUALITY_KEY, 100);
158-
resultMap.put(MAP_KEY_IMAGE_QUALITY, imageQuality);
159-
} else {
160-
resultMap.put(MAP_KEY_IMAGE_QUALITY, 100);
161-
}
160+
final int imageQuality = prefs.getInt(SHARED_PREFERENCE_IMAGE_QUALITY_KEY, 100);
161+
resultMap.put(MAP_KEY_IMAGE_QUALITY, imageQuality);
162162
}
163163
return resultMap;
164164
}

0 commit comments

Comments
 (0)