Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Flutter WebでもJamstackしたい

Fastriver
February 22, 2022

Flutter WebでもJamstackしたい

Fastriver

February 22, 2022
Tweet

More Decks by Fastriver

Other Decks in Technology

Transcript

  1. @fastriver_org Flutter Web is 何 • FlutterはGoogle主導のUIフレームワーク • Build apps

    for any screen ◦ どの環境でも同じ見た目を提供する • Flutterは元々モバイル向けだが、 Webサイト(SPA)としてもビルドできる →Flutter Web(Flutter on the Web) • 画面の構成は全てClient Side Rendering ◦ コンパイル時にはCanvas操作をするjsのみを生成 4 Flutter/Dartのマスコット Dash (https://youtu.be/6Kmb64jmH_8)
  2. @fastriver_org なぜFlutter Webを使うのか • UI構築がモバイルに似ている ◦ CSSを書かなくて良い ◦ HTMLを書かなくて良い ◦

    JSを書かなくて良い • Dartがよい言語 • Flutter WebはSPAを出力 ◦ Jamstackの適用ができそう 5
  3. @fastriver_org Flutter Web+Jamstackには何が必要? Flutter WebでのJamstackの仕組みは前例があまりない • コマンドでのデータ取得 ◦ CI中にデータを取ってくるため •

    データの保持 ◦ Flutterはクライアントサイドで画面を構築 ◦ データの形のままどこかに組み込む必要がある • 型情報の付与 ◦ DartはJavaライクな型を持つ ▪ 有効活用したい • リッチテキストの表示 ◦ FlutterはそのままではHTMLを表示できない 7
  4. @fastriver_org コマンドでのデータ取得 • Dartはスクリプト言語としても 利用可能 ◦ pubにスクリプト実行の仕組みあり • 設定したAPIを全て叩く •

    リスト形式であればoffsetを ずらして最後まで順に取得 • configはpubspec.yamlに記述 ◦ API名や形式など 8 pub: Flutter/Dartのパッケージ管理システム
  5. @fastriver_org リッチテキストの表示 • Flutterは基本Canvas描画なので 渡されたHTMLはそのまま表示 できない... ◦ 汎用パッケージにも WebViewがあるが 制約が多く使いづらい

    • Webに特化したパッケージを自作 ◦ PlatformViewというネイティブ画面を いじる仕組みが存在 ◦ HTMLをPlatformViewに流して表示 ▪ index.htmlのDOMに挿入される ◦ DOMを監視して高さを調整 11 Flutter リッチ テキスト 非常に自然な表示