🍪

【Flutter for Web】WebのdioでCookieを使う方法

2021/06/20に公開

@K-shir0です。最近はFlutter for Webで開発してます。Cookie使えないかもしれないということで悩まされたのでメモとして投稿します。

この記事で説明すること

  • dioでcookieを使う方法

この記事で説明しないこと

  • withCredentialsの仕組み。
  • Cookieの仕組み

Flutter for WebでCookie使えないんじゃ問題

Flutter for Webで JSライブラリのaxiosのようにwithCredentialsをtrueにしたら良い感じにして欲しいと思ったことはありませんか?issueやstack overflowなどにもなく自分は二日ぐらい悩ませれました

解決方法

実はdioにもwithCredentialsがあります。

final dio = Dio();

final clientAdapter = BrowserHttpClientAdapter(); // ブラウザ専用
clientAdapter.withCredentials = true;

dio.httpClientAdapter = clientAdapter; // アダプターをセット

dio.post(... // postやget

Cookieを受け取ると入って次送信するときにヘッダーに付けて送られます

以上、Flutter for Webでログイン認証などを作りたい人向けの情報でした。

上記ソースコードをモバイル向けやテストのときの注意点

BrowserHttpClientAdapterはdart:htmlパッケージを含んでいるので、モバイルなどでビルドしようとエラーになります。なのでモバイルの時は含まないなどの抽象化する処理が必要です。

httpパッケージで使いたい場合

検証はしていませんが、httpパッケージにもwithCredentialsが使えるらしい

Discussion