В Dart константная переменная — это константа времени компиляции, которой можно присвоить значение только во время компиляции. Если вы попытаетесь присвоить константной переменной значение неправильного типа, вы столкнетесь с ошибкой типа. В этой статье блога будут рассмотрены различные методы присвоения строковых значений константным переменным типа Uri в Dart, а также приведены примеры кода для каждого метода.
Метод 1: использование метода Uri.tryParse()
Класс Uri в Dart предоставляет статический метод под названием tryParse(), который пытается создать объект Uri из строки. Используя этот метод, мы можем присвоить строковое значение константной переменной типа Uri. Вот пример:
const urlString = 'https://example.com';
const uri = Uri.tryParse(urlString) ?? Uri();
Метод 2: преобразование строки в Uri с помощью Uri.parse()
Класс Uri также предоставляет статический метод parse(), который создает объект Uri из строки. Хотя этот метод не является константно-безопасным, мы все равно можем использовать его для преобразования строки в Uri и присвоения ее неконстантной переменной. Вот пример:
final urlString = 'https://example.com';
final uri = Uri.parse(urlString);
Метод 3: использование конструкторов Uri.https() или Uri.http()
Класс Uri имеет конструкторы, специально предназначенные для создания URI HTTP и HTTPS. Эти конструкторы позволяют вам предоставлять компоненты схемы, полномочий, пути, запроса и фрагмента в качестве отдельных аргументов. Вот пример:
const uri = Uri.https('example.com', '/path', {'query': 'value'});
Метод 4: создание пользовательской функции
Если вам нужна большая гибкость или собственная логика синтаксического анализа, вы можете создать свою собственную функцию для преобразования строки в Uri. Этот метод позволяет вам выполнять любые необходимые преобразования или проверки перед присвоением значения константной переменной. Вот пример:
const urlString = 'https://example.com';
const uri = _createUriFromString(urlString);
Uri _createUriFromString(String urlString) {
// Custom parsing logic here
return Uri.parse(urlString);
}
Хотя константные переменные в Dart не могут напрямую принимать строковые значения, если их тип — Uri, мы исследовали несколько методов присвоения строковых значений константным переменным типа Uri. Используя встроенные методы класса Uri, такие как tryParse(), parse(), или конструкторы, такие как Uri.https() и Uri.http(), мы можем успешно преобразовать строковые значения в объекты Uri. Кроме того, мы можем создавать собственные функции для выполнения более сложных требований синтаксического анализа. Используя эти методы, вы можете эффективно работать с константными переменными типа Uri в Dart.