Создаем портфолио за 1 месяц
К концу месяца: 4 классных проекта в вашем портфолио! Стоимость: 100$. Подробности...
1022 of 1024 menu
◀ ▶

Класс 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'.

Смотрите также

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить