誰のためか
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);
});
}