DartでURLエンコードとURLデコードを実施する

誰のためか

DartやFlutterでURLエンコードやURLデコードをしたい人向けです。
URLエンコードとは、ブラウザのURL欄に日本語とか空白とかが入ったときに「%1G」みたいな文字の羅列に変換するやつです。

結論

色々探しましたが、結局coreに入ってました。
Uri.encodeFullとUri.decodeFullを使います

テストコード

import 'package:flutter_test/flutter_test.dart';

main() {
  var decodedString = 'あいうえお一二三';
  var encodedString =
      '%E3%81%82%E3%81%84%E3%81%86%E3%81%88%E3%81%8A%E4%B8%80%E4%BA%8C%E4%B8%89';

  test('decode', () async {
    expect(Uri.decodeFull('%E3%81%82'), 'あ');
    expect(Uri.encodeFull(decodedString), encodedString);
    expect(Uri.decodeFull(encodedString), decodedString);
  });
}