A unified, asynchronous, easy-to-use library for offline-enabled browser-based web apps. Kinda sorta a port of Lawnchair to Dart, but with Futures and Streams.
Lawndart uses Futures to provide an asynchronous, yet consistent, interface to local storage, indexed db, and websql. This library is designed for simple key-value usage, and is not designed for complex transactional queries. This library prefers simplicity and uniformity over expressiveness.
You can use this library to help deal with the wide array of client-side storage options. You should be able to write your code against the Lawndart interface and have it work across browsers that support at least one of the following: local storage, indexed db, and websql.
// Picks the best store available. var db = await Store.open("simple-run-through", 'test'); await db.open(); await db.nuke(); await db.save("world", "hello"); await db.save("is fun", "dart"); var value = await db.getByKey("hello"); querySelector('#text').text = value;
See the example/ directory for more sample code.
This is now made easy for you. Simply create a new instance of Store:
var store = await Store.open('dbName', 'storeName');
The factory constructor will try IndexedDB, then WebSQL, and then finally local storage. Of course, you can perform your own logic to choose which option works for you.
Opens the database and makes it available for reading and writing.
Wipes the database clean. All records are deleted.
Future save(value, key)
Stores a value accessible by a key.
Retrieves a value, given a key.
Returns all keys.
Returns all values.
Stores all values and their keys.
Returns all values, given keys.
Returns true if the key exists, or false.
Removes the value for the key.
Removes all values for the keys.
Most methods return a Future, like
Methods that would return many things, like
all, return a Stream.
You can consult Can I Use? for a breakdown of browser support for the various storage technologies.
Lawndart is a pub package. To install it, and link it into your app, add lawndart to your pubspec.yaml. For example:
name: your_cool_app dependencies: lawndart: any
If you use Dart Editor, select your project from the Files view, then go to Tools, and run Pub Install.
If you use the command line, ensure the Dart SDK is on your path, and
Lawndart is hosted at https://github.com/sethladd/lawndart
You can file issues at https://github.com/sethladd/lawndart/issues
API docs at http://sethladd.github.com/lawndart/
This library is open source, pull requests welcome!
Copyright 2015 Google Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
Add this to your package's pubspec.yaml file:
dependencies: lawndart: "^0.9.0"
You can install packages from the command line:
$ pub get
Alternatively, your editor might support
Check the docs for your editor to learn more.
Now in your Dart code, you can use:
|0.9.0||Mar 31, 2015|
|0.6.5||Jan 18, 2014|
|0.6.4||Oct 24, 2013|
|0.6.3||Oct 24, 2013|
|0.6.2||Oct 24, 2013|
|0.6.1||Jun 28, 2013|
|0.6.0||Jun 27, 2013|
|0.5.0||May 24, 2013|
|0.4.3||Apr 18, 2013|
|0.4.2||Mar 21, 2013|
We analyzed this package, and provided a score, details, and suggestions below.
Describes how popular the package is relative to other packages. [more]
Code health derived from static analysis. [more]
Reflects how tidy and up-to-date the package is. [more]
Weighted score of the above. [more]
Detected platforms: web
Strong-mode analysis of
lib/src/_map_store.dartfailed with the following error:
line: 38 col: 3
Invalid override. The type of '_MapStore.save' ('(String, String) → Future<dynamic>') isn't a subtype of 'Store.save' ('(String, String) → Future<String>').
Strong-mode analysis of
lib/src/local_storage_store.dartfailed with the following error:
line: 33 col: 3
Invalid override. The type of 'LocalStorageStore._generateMap' ('() → Map<dynamic, dynamic>') isn't a subtype of '_MapStore._generateMap' ('() → Map<String, String>').
Fix further 2 Dart files.
Similar analysis of the following files failed:
Fix issues reported by
dartanalyzerreported 3 error(s) and 0 warning(s).
The description is too short.
Add more detail about the package, what it does and what is its target use case. Try to write at least 60 characters.
Package is pre-v1 release.
While there is nothing inherently wrong with versions of
0.*.*, it usually means that the author is still experimenting with the general direction API.
Maintain an example.
None of the files in your
example/directory matches a known example patterns. Common file name patterns include:
example.dartor you could also use