Класс PlatformException
При вызове MethodChannel.invokeMethod платформа может вернуть
PlatformException с кодом code, текстом message
и необязательным details.
Его ловят в try/catch на стороне Dart и показывают пользователю
или логируют через
FlutterError.
Синтаксис
PlatformException(
code: code,
message: message,
details: details,
)
Параметры
| Параметр | Описание |
|---|---|
code |
Короткий код ошибки со стороны платформы. |
message |
Текст, который можно показать пользователю. |
details |
Дополнительные данные. Можно не задавать. |
Пример
Давайте поймать PlatformException и показать abcde:
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
void main()
{
runApp(
MaterialApp(
home: Scaffold(
body: FutureBuilder<String>(
future: () async {
const channel = MethodChannel('demo/abcde');
try {
await channel.invokeMethod('fail');
return 'ok';
} on PlatformException catch (e) {
return e.message ?? 'abcde';
}
}(),
builder: (context, snap) {
return Center(
child: Text(snap.data ?? 'abcde'),
);
},
),
),
),
);
}
Если канал не реализован, на экране будет 'abcde' из ветки catch.
Пример
Давайте создать исключение с кодом 12345:
import 'package:flutter/services.dart';
void main()
{
final error = PlatformException(
code: '12345',
message: 'native fail',
);
print(error.code);
print('abcde');
}
Результат выполнения кода
12345
abcde
Смотрите также
-
класс
MissingPluginException,
когда для канала нет реализации -
класс
FlutterError,
который логирует dart side черезreportError -
класс
NetworkImageLoadException,
другая ошибка IO при загрузке -
класс
ErrorWidget,
еслиPlatformExceptionне поймали в build