• 1000
Например, у одного может быть плагин, структурированный следующим образом:
- my_plugin_io.dart
- my_plugin_web.dart
- my_plugin_stub.dart
- my_plugin.dart
Давайте разберем его на простом примере:
my_plugin.dart
Здесь вы можете использовать класс вашего плагина в нескольких проектах (ie. Среды).
import 'my_plugin_stub.dart'
if (dart.library.io) 'my_plugin_io.dart'
if (dart.library.html) 'my_plugin_web.dart';
class MyPlugin {
void foo() {
var bar = myPluginMethod(); // it will either resolve for the web or io implementation at compile time
}
}
my_plugin_stub.dart
Это то, что на самом деле разрешится во время компиляции ( заглушка ) справа myPluginMethod()
метод.
Object myPluginMethod() {
throw UnimplementedError('Unsupported');
}
А затем создайте реализации платформы
my_plugin_web.dart
import 'dart:html' as html;
Object myPluginMethod() {
// Something that use dart:html data for example
}
my_plugin_io.dart
import 'dart:io';
Object myPluginMethod() {
// Something that use dart:io data for example
}
Другие официальные альтернативы могут пройти от создания отдельных проектов с одним и тем же интерфейсом. Это похоже на то, что команда Flutter сделала для своих плагинов web + io, в результате чего получился проект, который можно объединить с несколькими проектами:
- my_plugin_io
- my_plugin_web
- my_plugin_desktop
- my_plugin_interface
Хорошую статью, объясняющую это, можно найти здесь .
Просто набрал его прямо здесь, в SO, извините, если у меня была опечатка, но вы легко найдете ее в редакторе.