【Flutter × Notion API】Notion投稿専用アプリを作ってみた
最近Notionの便利さに目覚めたのですが、時を同じくしてNotion APIがベータ版として公開されたのを知って、勢いでアプリを作ってみました。
本記事では、アプリの紹介(メイン)と技術的なことを軽くご紹介できればと思います。(Notion APIを使う上でハマりどころもあったので、別記事で書ければ書きたいです。)
Quick Notion
できることとしては、
- Notion認証して、
- 投稿したいページの選択して、
- テキストの投稿する。
という、かなりシンプルなNotion投稿専用アプリになっています。
Flutter周りの実装について
アーキテクチャ
アーキテクチャに関しては、Provider × StateNotifier × Freezed というオーソドックスな形を採用しました。
それにプラスしてRepositoryを設けてAPIの処理をするようにしています。
また、普段はAndroid開発をしており、MVVMで実装したほうが何かとわかりやすかったので、
TopPage <-> TopViewModel <-> XXXRepository
という感じで命名などを揃えました。
パッケージ
今回利用した主なパッケージでいうと、下記の通りとなっています。
Notion API呼び出しで dio を初めて使いましたが、使いやすくてなかなか便利でした。
認証する際にURLスキームの処理が必要だったので uni_links も使っています。
Notion APIに関して
ドキュメントがわかりやすい
はい、基本的にはドキュメントを見れば十分でした。(というか公開されて日も浅いのでネット上にあまり情報も転がってないのでドキュメントを見るしかなかった)
まだベータ版
公開されはしたものの、まだベータ版なので、仕様変更で動かなくなったりする可能性もあるのかなぁと思っています。
Changelog を日頃チェックするのも必要かもしれません。
Quick Notionで使用したAPI
Notion認証、投稿したいページの選択、テキストの投稿の3つでそれぞれAPIを使いました。
認証
Notionの認証で使いました。
現状だと、workspaceのadminじゃないと認証できないようです。
また、同じworkspaceに対しては1つのaccess tokenしか認められないようです。(複数ユーザーが同じworkspaceに対して認証できない?)
ページの選択
投稿先のページを選択するのに使いました。
本来の使い方としてあっているのかは不明ですが、検索のqueryを空文字で指定すると全部のページ(最大100ページまでの制限あり)が取得できるようです。
投稿
テキストの投稿で使いました。
現状、投稿のみで編集や削除はできないようです。
終わりに
ざっくりとですが、アプリの紹介と技術的なことを軽くご紹介しました。
興味がある方はぜひインストールして使っていただけると幸いです!
(記事に関しておかしなところ・間違っているところ、アプリのバグなどがありましたら優しく指摘いただけると嬉しいです。)
Discussion