Secondo il chrome packaged app API documentation, non è possibile utilizzare window.localStorage
ma è possibile utilizzare chrome.storage
per ottenere un API con caratteristiche simili (e più).
È inoltre necessario richiedere il permesso di stoccaggio nel vostro manifesto:.
...
"permissions": [
"storage"
],
Date un'occhiata a the chrome
pub package che dovrebbe fornire l'accesso a Chrome '* API a Dart (quando si importa nel tuo pubspec Te. re particolarmente interessato a the chrome.storage
Dart library
Esempio di utilizzo qui di seguito (utilizzando l'opzione App Chrome Confezionato in Dart Editor nuova applicazione) ...:.
import 'dart:html';
import 'package:js/js.dart' as js;
import 'package:chrome/chrome.dart' as chrome;
void main() {
print("Starting...");
query("button").onClick.listen(onClick);
}
onClick(e) {
document.body.append(new Element.html("<p>Clicked...</p>"));
// save the highscore 123
chrome.storage.local.set({'highscore':'123'}).then((storageArea) {
// load the highscore
chrome.storage.local.get(['highscore']).then((Map<String,String> vals) {
var highscore = vals['highscore'];
document.body.append(new Element.html("<p>$highscore</p>"));
});
});
}
con HTML che assomiglia a questo:
...snip
<button>Click Me</button>
<script src="storage.dart" type="application/dart"></script>
<script src="packages/browser/dart.js"></script>
<script src="packages/browser/interop.js"></script>
<script src="packages/js/dart_interop.js"></script>
...
e un manifesto che assomiglia a questo:
{
"name": "StorageExample",
"version": "1",
"manifest_version": 2,
"icons": {"128": "dart_icon.png"},
"permissions" : [
"storage"
],
"app": {
"background": {
"scripts": ["background.js"]
}
}
}
havn't provato in Dartium, ma la conversione in JS e carico come un app confezionato in Chrome v28 funziona bene.
fonte
2013-07-26 07:12:02
Ah! Sai perché la memoria locale non è supportata? Inoltre, mi confondo con gli esempi dell'API di archiviazione di Chrome che utilizza la freccetta. Ti dispiacerebbe postare un'implementazione delle funzioni di salvataggio e caricamento? –
Codice di esempio aggiunto. Assicurati di aggiungere il pacchetto 'chrome' al tuo' pubspec.yaml' –
@ChrisBuckett Hai avuto la possibilità di provare il codice in Dartium? Per alcuni motivi che non riesco a ottenere, il metodo chrome.local.set ritorna senza mettere nulla nella memoria locale. – nunobaba