Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Added retrieving string array, getting values of individual types #7

Merged
merged 6 commits into from
Apr 12, 2024
Merged
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
4 changes: 2 additions & 2 deletions example/ios/Podfile.lock
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
PODS:
- Flutter (1.0.0)
- shared_preference_app_group (0.3.0):
- shared_preference_app_group (1.0.0):
- Flutter

DEPENDENCIES:
Expand All @@ -15,7 +15,7 @@ EXTERNAL SOURCES:

SPEC CHECKSUMS:
Flutter: 50d75fe2f02b26cc09d224853bb45737f8b3214a
shared_preference_app_group: 4b43f9c787e876bfabf6805735677e3dec276bec
shared_preference_app_group: 83d2284f9e747839c40fc281403b5b60d83e2989

PODFILE CHECKSUM: 8e679eca47255a8ca8067c4c67aab20e64cb974d

Expand Down
2 changes: 2 additions & 0 deletions example/ios/Runner/Info.plist
Original file line number Diff line number Diff line change
Expand Up @@ -41,5 +41,7 @@
</array>
<key>UIViewControllerBasedStatusBarAppearance</key>
<false/>
<key>CADisableMinimumFrameDurationOnPhone</key>
<true/>
</dict>
</plist>
13 changes: 8 additions & 5 deletions example/lib/main.dart
Original file line number Diff line number Diff line change
Expand Up @@ -38,19 +38,22 @@ class _MyAppState extends State<MyApp> {
SharedPreferenceAppGroup.setString('MY_STRING_KEY', 'STRING_VALUE');
SharedPreferenceAppGroup.setInt('MY_INT_KEY', 42);
SharedPreferenceAppGroup.setDouble('MY_DOUBLE_KEY', 9.9);
SharedPreferenceAppGroup.setStringList('MY_STRING_ARRAY', ["element1", "element2", "element3"]);
}

Future<void> getMyParams() async {
bool boolValue = await SharedPreferenceAppGroup.get('MY_BOOL_KEY');
String stringValue = await SharedPreferenceAppGroup.get('MY_STRING_KEY');
int intValue = await SharedPreferenceAppGroup.get('MY_INT_KEY');
double doubleValue = await SharedPreferenceAppGroup.get('MY_DOUBLE_KEY');
bool boolValue = await SharedPreferenceAppGroup.getBool('MY_BOOL_KEY');
String stringValue = await SharedPreferenceAppGroup.getString('MY_STRING_KEY');
int intValue = await SharedPreferenceAppGroup.getInt('MY_INT_KEY');
double doubleValue = await SharedPreferenceAppGroup.getDouble('MY_DOUBLE_KEY');
List<String> stringArrayValue = await SharedPreferenceAppGroup.getStringList('MY_STRING_ARRAY');

this.myParams = {
'MY_BOOL_KEY': boolValue,
'MY_STRING_KEY': stringValue,
'MY_INT_KEY': intValue,
'MY_DOUBLE_KEY': doubleValue
'MY_DOUBLE_KEY': doubleValue,
'MY_STRING_ARRAY': stringArrayValue
};

String text = '';
Expand Down
49 changes: 49 additions & 0 deletions ios/Classes/SharedPreferenceAppGroupPlugin.m
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,15 @@ - (void)setString:(FlutterMethodCall *)call result:(FlutterResult)result {
result(nil);
}

- (void)setStringArray:(FlutterMethodCall *)call result:(FlutterResult)result {
[self checkAppGroup:result];

NSString *key = call.arguments[@"key"];
NSArray *value = call.arguments[@"value"];
[self.userDefaults setValue:value forKey:key];
result(nil);
}

- (void)get:(FlutterMethodCall *)call result:(FlutterResult)result {
[self checkAppGroup:result];

Expand All @@ -96,6 +105,46 @@ - (void)get:(FlutterMethodCall *)call result:(FlutterResult)result {
result(value);
}

- (void)getBool:(FlutterMethodCall *)call result:(FlutterResult)result {
[self checkAppGroup:result];

NSString *key = call.arguments[@"key"];
NSNumber *value = [NSNumber numberWithBool:[self.userDefaults boolForKey:key]];
result(value);
}

- (void)getInt:(FlutterMethodCall *)call result:(FlutterResult)result {
[self checkAppGroup:result];

NSString *key = call.arguments[@"key"];
NSNumber *value = [NSNumber numberWithLong:[self.userDefaults integerForKey:key]];
result(value);
}

- (void)getDouble:(FlutterMethodCall *)call result:(FlutterResult)result {
[self checkAppGroup:result];

NSString *key = call.arguments[@"key"];
NSNumber *value = [NSNumber numberWithDouble:[self.userDefaults doubleForKey:key]];
result(value);
}

- (void)getString:(FlutterMethodCall *)call result:(FlutterResult)result {
[self checkAppGroup:result];

NSString *key = call.arguments[@"key"];
NSString *value = [self.userDefaults stringForKey:key];
result(value);
}

- (void)getStringArray:(FlutterMethodCall *)call result:(FlutterResult)result {
[self checkAppGroup:result];

NSString *key = call.arguments[@"key"];
NSArray<NSString *> *value = [self.userDefaults stringArrayForKey:key];
result(value);
}

- (void)getAll:(FlutterMethodCall *)call result:(FlutterResult)result {
[self checkAppGroup:result];

Expand Down
46 changes: 46 additions & 0 deletions lib/shared_preference_app_group.dart
Original file line number Diff line number Diff line change
Expand Up @@ -41,13 +41,59 @@ class SharedPreferenceAppGroup {
await _setValue('String', key, value);
}

/// Saves a string list [value] to persistent storage under the specified app group.
///
/// If [value] is null, this is equivalent to calling [remove()] on the [key].
static Future<void> setStringList(String key, List<String>? value) async {
await _setValue('StringArray', key, value);
}

/// Reads a value of any type from persistent storage under the specified app group.
///
/// If the persistent storage does not contains [key], then [null] will be returned
static Future<dynamic> get(String key) async {
return await _channel.invokeMethod('get', {'key': key});
}

/// Reads a boolean value from persistent storage under the specified app group.
///
/// If the persistent storage does not contains [key], then [null] will be returned
static Future<bool?> getBool(String key) async {
return await _channel.invokeMethod('getBool', {'key': key});
}

/// Reads a integer value from persistent storage under the specified app group.
///
/// If the persistent storage does not contains [key], then [null] will be returned
static Future<int?> getInt(String key) async {
return await _channel.invokeMethod('getInt', {'key': key});
}

/// Reads a double value from persistent storage under the specified app group.
///
/// If the persistent storage does not contains [key], then [null] will be returned
static Future<double?> getDouble(String key) async {
return await _channel.invokeMethod('getDouble', {'key': key});
}

/// Reads a string value from persistent storage under the specified app group.
///
/// If the persistent storage does not contains [key], then [null] will be returned
static Future<String?> getString(String key) async {
return await _channel.invokeMethod('getString', {'key': key});
}

/// Reads a string array value from persistent storage under the specified app group.
///
/// If the persistent storage does not contains [key], then [null] will be returned
static Future<List<String>?> getStringList(String key) async {
final List? receivedArray = await _channel.invokeMethod('getStringArray', {'key': key});
if (receivedArray != null) {
return receivedArray.cast<String>();
}
return null;
}

/// Reads all key-value pairs from persistent storage under the specified app group.
static Future<Map<String, dynamic>> getAll() async {
Map<dynamic, dynamic> allPrefs = await _channel.invokeMethod('getAll');
Expand Down