Я работаю с API, который требует данных, закодированных в base64. Как я могу кодировать простую строку в base64?
Как кодировать строку Dart в base64?
Ответ 1
Требуется несколько шагов, но кодировка строки в base64 довольно проста.
Dart имеет функцию в package: crypto library, CryptoUtils.bytesToBase64
, которая берет список байтов для кодирования как base64. Чтобы получить список байтов из строки Dart, вы можете использовать функцию UTF8.encode()
в библиотеке dart:convert.
Все это выглядит так:
import 'dart:convert';
import 'package:crypto/crypto.dart';
main() {
var str = "Hello world";
var bytes = UTF8.encode(str);
var base64 = CryptoUtils.bytesToBase64(bytes);
print(base64);
}
Если вы работаете внутри браузера, у вас есть более простой вариант использования браузера, встроенного в функцию btoa
. Вышеприведенный фрагмент кода становится:
import 'dart:html';
main() {
var str = "Hello world";
var base64 = window.btoa(str);
print(base64);
}
Ответ 2
Нет необходимости использовать пакет crypto, поскольку библиотеки ядра обеспечивают встроенную поддержку кодирования и декодирования base64.
https://api.dartlang.org/stable/2.1.0/dart-convert/dart-convert-library.html
import 'dart:convert';
main() {
var str = "Hello world";
var bytes = utf8.encode(str);
var base64 = base64.encode(bytes);
print(base64);
}