7
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【Flutter】HTTPのプラグインhttp.get時のエラーの対処法

Last updated at Posted at 2021-06-27

microCMSとFlutterを使ってメディアを作るチュートリアルを行ったときのことです。
puv.devのHTTPプラグインをインストールしてhttp.getしたときにエラーが出たのでその解消法を記述します。

microCMSさんおブログの通り進めて行くのですが、microCMSに対してHTTPリクエストを行う部分のhttp.getのところで下記のようなエラーが出てきました。

main.dart
  void _loadListItem() async {
    final result = await http.get(
       'https://sample.microcms.io/api/v1/articles?fields=id,publishedAt,title,eyecatching',
        headers: {"X-API-KEY": 'fvvav89v-0019-65f6-4rg2-vfvf9v08fvaf'});
    List contents = json.decode(result.body)['contents'];
    _listItems.clear();
    _listItems.addAll(contents.map((content) => ListItem.fromJSON(content)));
  }

※ APIは適当に書いています。

lib/main.dart:28:9: Error: The argument type 'String' can't be assigned to the parameter type 'Uri'.
 - 'Uri' is from 'dart:core'.                                           
        'https://sample.microcms.io/api/v1/articles?fields=id,publishedAt,title,eyecatching',
        ^   

メッセージ通り、Uri型な関数が必要なのに、String型として関数を受け取っているためエラーがでています。

package:http 0.13.0では変更が行われ、以前はStringまたはUriを渡すことができたAPIは、すべてUriを必要とするようになりました。
ちょうどNull safetyが対応してきたやつですね。

解消法

Uri.parseで置換することで解消することができます。

以前の書き方 置換する方法
http.get('hogehoge') http.get(Uri.parse('hogehoge'))

http.postの場合も同じです。

ということなので上のソースを書き換えるとこのようになります。

main.dart
  void _loadListItem() async {
    final result = await http.get(
        Uri.parse(
            'https://sample.microcms.io/api/v1/articles?fields=id,publishedAt,title,eyecatching'),
        headers: {"X-API-KEY": 'fvvav89v-0019-65f6-4rg2-vfvf9v08fvaf'});
    List contents = json.decode(result.body)['contents'];
    _listItems.clear();
    _listItems.addAll(contents.map((content) => ListItem.fromJSON(content)));
  }

無事エラーが解消されました。
バージョンには気をつけてください。

参考:

7
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?