Nach dem chrome packaged app API documentation, können Sie nicht window.localStorage
verwenden, aber Sie chrome.storage
können eine API mit ähnlichen Eigenschaften zu erhalten (und mehr).
Sie müssen auch die Speicher Erlaubnis in Ihrem Manifest beantragen..
...
"permissions": [
"storage"
],
einen Blick auf the chrome
pub package nehmen, die den Zugang zu Chrom bieten sollte * APIs in Dart (wenn Sie es in Ihrem pubspec importieren Sie‘ re besonders interessiert the chrome.storage
Dart library
Anwendungsbeispiel unten (durch die Chrome Packaged App-Option im Dart Editor Neue Anwendung verwenden) ...:.
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>"));
});
});
}
mit HTML, die wie folgt aussehen:
...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>
...
und ein Manifest, das wie folgt aussieht:
{
"name": "StorageExample",
"version": "1",
"manifest_version": 2,
"icons": {"128": "dart_icon.png"},
"permissions" : [
"storage"
],
"app": {
"background": {
"scripts": ["background.js"]
}
}
}
I havn't in Dartium getestet, aber als gepackte Anwendung zu JS und Laden Umwandlung in Chrome v28 funktioniert gut.
Ah! Weißt du, warum Localstorage nicht unterstützt wird? Ich werde auch durch die Beispiele für die Chrome-Speicher-API mit Dart verwirrt. Würde es Ihnen etwas ausmachen, eine Implementierung der Speicher- und Ladefunktionen zu posten? –
Beispielcode hinzugefügt. Stelle sicher, dass du das "chrome" -Paket zu deinem 'pubspec.yaml' hinzufügst –
@ChrisBuckett Hast du die Möglichkeit den Code in Dartium auszuprobieren? Aus einigen Gründen, die ich nicht erhalten kann, kehrt die chrome.local.set-Methode zurück, ohne etwas in den lokalen Speicher zu schreiben. – nunobaba