🍪
【Flutter for Web】WebのdioでCookieを使う方法
@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