5

最初にローカルのIndexedDBストアからデータをロードする必要があるDart+WebUIアプリがあります。IndexedDB APIは非同期であるため、データが読み込まれたときにコールバックを受け取ります。データベースを最初に開いて使用できるようになるまで、UI要素を表示したくありません。

UIを表示する前にデータベースの初期化を待つにはどうすればよいですか?

4

2 に答える 2

5

私は自分のプロジェクトでWebUIの方法でそれを行っています:

...
<body>
  <template if="showApplication">
    <span>The app is ready.</span>
  </template>
</body>
...
@observable bool showApplication = false;

main() {
  // Initialize...
  window.indexedDB.open(...).then((_) {
    showApplication = true;
  });
}

これには追加のボーナスもあります。個別のコード/Webコンポーネントは、db接続などに依存する前にアプリの状態を確認することもできます。

于 2013-02-12T11:26:19.170 に答える
3

bodyタグをvisibility:hidden:で非表示にします

<body style="visibility:hidden">
  <!-- content -->
</body>

そして、それを将来のthen()コールバックに表示します

window.indexedDB.open(dbName, 
  version: version, 
  onUpgradeNeeded: createObjectStore).then(handleDBOpened);

handleDBOpened(..) {
  query('body').style.visibility = "visible"; // <-- show the body tag
}
于 2013-02-12T08:51:31.153 に答える