Класс MissingPluginException
Когда Dart вызывает MethodChannel без native handler,
MissingPluginException сообщает в message, какой вызов не найден.
Его отличают от
PlatformException,
который приходит уже из реализованного плагина.
Синтаксис
MissingPluginException(message)
Параметры
| Параметр | Описание |
|---|---|
message |
Какой вызов не нашёл реализацию на платформе. |
Пример
Давайте вызвать несуществующий канал и показать 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('no/such');
try {
await channel.invokeMethod('abcde');
return 'ok';
} on MissingPluginException {
return 'abcde';
}
}(),
builder: (context, snap) {
return Center(
child: Text(snap.data ?? ''),
);
},
),
),
),
);
}
На экране по центру строка 'abcde' из обработчика MissingPluginException.
Пример
Давайте вывести код 12345 в SnackBar после catch:
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
void main()
{
runApp(
MaterialApp(
home: Builder(
builder: (context) {
return Scaffold(
body: Center(
child: ElevatedButton(
onPressed: () async {
const channel = MethodChannel('demo');
try {
await channel.invokeMethod('x');
} on MissingPluginException {
ScaffoldMessenger.of(context).showSnackBar(
const SnackBar(content: Text('12345')),
);
}
},
child: const Text('abcde'),
),
),
);
},
),
),
);
}
Кнопка с текстом 'abcde'; после нажатия SnackBar покажет '12345'.
Смотрите также
-
класс
PlatformException,
когда native вернул код ошибки -
класс
FlutterError,
которыйreportErrorшлёт details в консоль -
класс
ErrorWidget,
если исключение не поймали в build -
класс
FlutterErrorDetails,
обёртка для stack приreportError