-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
2047def
commit 7caab18
Showing
10 changed files
with
133 additions
and
8 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,2 +1,2 @@ | ||
# tekartik strict extension | ||
include: package:tekartik_lints/strict.yaml | ||
include: package:tekartik_lints/package.yaml |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,12 @@ | ||
import 'package:tekartik_prefs/prefs_async.dart'; | ||
|
||
import 'src/prefs.dart' as src; | ||
|
||
export 'package:tekartik_prefs/prefs_async.dart'; | ||
|
||
/// The prefs factory to user | ||
PrefsAsyncFactory get prefsAsyncFactory => src.prefsAsyncFactory; | ||
|
||
/// Support Windows and Linux desktop | ||
PrefsAsyncFactory getPrefsAsyncFactory({String? packageName}) => | ||
src.getPrefsAsyncFactory(packageName: packageName); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,22 +1,55 @@ | ||
import 'package:tekartik_app_sembast/sembast.dart'; | ||
import 'package:tekartik_prefs_sembast/prefs.dart'; | ||
import 'package:tekartik_prefs_sembast/prefs_async.dart'; | ||
|
||
/// Default for io use a local folder | ||
PrefsFactory get prefsFactory => getPrefsFactory(); | ||
|
||
final _prefsFactoryMap = <String?, PrefsFactory>{}; | ||
/// Default for io use a local folder | ||
PrefsAsyncFactory get prefsAsyncFactory => getPrefsAsyncFactory(); | ||
|
||
final _prefsFactoryMap = <String, PrefsFactory>{}; | ||
final _prefsAsyncFactoryMap = <String, PrefsAsyncFactory>{}; | ||
PrefsFactory? _defaultPrefsFactory; | ||
PrefsAsyncFactory? _defaultPrefsAsyncFactory; | ||
|
||
/// Sembast prefs factory | ||
PrefsFactory newPrefsFactorySembast(String? packageName) { | ||
return getPrefsFactorySembast( | ||
getDatabaseFactory(packageName: packageName), '.'); | ||
} | ||
|
||
/// Sembast prefs factory | ||
PrefsAsyncFactory newPrefsAsyncFactorySembast({String? packageName}) { | ||
return getPrefsAsyncFactorySembast( | ||
getDatabaseFactory(packageName: packageName), '.'); | ||
} | ||
|
||
/// Use sembast on linux and windows | ||
PrefsFactory getPrefsFactory({String? packageName}) { | ||
var prefsFactory = _prefsFactoryMap[packageName]; | ||
if (prefsFactory == null) { | ||
_prefsFactoryMap[packageName] = | ||
prefsFactory = newPrefsFactorySembast(packageName); | ||
if (packageName == null) { | ||
return _defaultPrefsFactory ??= newPrefsFactorySembast(packageName); | ||
} else { | ||
_prefsFactoryMap[packageName] = | ||
prefsFactory = newPrefsFactorySembast(packageName); | ||
} | ||
} | ||
return prefsFactory; | ||
} | ||
|
||
/// Use sembast on linux and windows | ||
PrefsAsyncFactory getPrefsAsyncFactory({String? packageName}) { | ||
var prefsFactory = _prefsAsyncFactoryMap[packageName]; | ||
if (prefsFactory == null) { | ||
if (packageName == null) { | ||
prefsFactory = _defaultPrefsAsyncFactory ??= | ||
newPrefsAsyncFactorySembast(packageName: packageName); | ||
} else { | ||
_prefsAsyncFactoryMap[packageName] = | ||
prefsFactory = newPrefsAsyncFactorySembast(packageName: packageName); | ||
} | ||
} | ||
return prefsFactory; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,9 +1,19 @@ | ||
import 'package:tekartik_prefs/prefs.dart'; | ||
import 'package:tekartik_prefs/prefs_async.dart'; | ||
|
||
/// Stub | ||
PrefsFactory get prefsFactory => _stub('prefsFactory'); | ||
|
||
/// Stub | ||
PrefsAsyncFactory get prefsAsyncFactory => _stub('prefsAsyncFactory'); | ||
|
||
/// Stub | ||
PrefsFactory getPrefsFactory({String? packageName}) => _stub('getPrefsFactory'); | ||
|
||
/// Stub | ||
PrefsAsyncFactory getPrefsAsyncFactory({String? packageName}) => | ||
_stub('getPrefsAsyncFactory'); | ||
|
||
T _stub<T>(String message) { | ||
throw UnimplementedError(message); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,5 +1,16 @@ | ||
import 'package:tekartik_prefs/prefs_async.dart'; | ||
import 'package:tekartik_prefs_browser/prefs.dart'; | ||
import 'package:tekartik_prefs_browser/prefs_async.dart'; | ||
|
||
/// Browser prefs factory | ||
PrefsFactory get prefsFactory => prefsFactoryBrowser; | ||
|
||
/// Browser prefs factory | ||
PrefsFactory getPrefsFactory({String? packageName}) => prefsFactory; | ||
|
||
/// Browser prefs factory | ||
PrefsAsyncFactory get prefsAsyncFactory => prefsAsyncFactoryBrowser; | ||
|
||
/// Browser prefs factory | ||
PrefsAsyncFactory getPrefsAsyncFactory({String? packageName}) => | ||
prefsAsyncFactory; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,44 @@ | ||
import 'package:tekartik_app_common_prefs/app_prefs_async.dart'; | ||
import 'package:test/test.dart'; | ||
|
||
void main() async { | ||
group('app_prefs_sync', () { | ||
test('default', () async { | ||
var prefs = await prefsAsyncFactory.openPreferences('test_prefs.db'); | ||
var value = await prefs.getInt('value') ?? 0; | ||
await prefs.setInt('value', ++value); | ||
// print('prefs set to $value'); | ||
// Should increment at each test | ||
}); | ||
test('doc', () async { | ||
// Get the default persistent prefs factory. | ||
var prefsFactory = getPrefsAsyncFactory(); | ||
var prefs = await prefsFactory.openPreferences('my_shared_prefs'); | ||
|
||
// Once you have a [Prefs] object ready, use it. You can keep it open. | ||
await prefs.setInt('value', 26); | ||
var title = await prefs.getString('title'); | ||
|
||
{ | ||
// For Windows/Linux support you can add package name to find a shared | ||
// location on the file system | ||
var prefsFactory = getPrefsAsyncFactory(packageName: 'my.package.name'); | ||
|
||
expect(prefsFactory, isNotNull); | ||
} | ||
|
||
// Memory | ||
{ | ||
// In memory prefs factory. | ||
var prefsFactory = newPrefsAsyncFactoryMemory(); | ||
var prefs = await prefsFactory.openPreferences('test_prefs.db'); | ||
expect(await prefs.getInt('value'), isNull); | ||
await prefs.setInt('value', 1); | ||
expect(await prefs.getInt('value'), 1); | ||
} | ||
|
||
// ignore: unnecessary_statements | ||
title; | ||
}); | ||
}); | ||
} |