Ответ
Да, у меня есть опыт нативной разработки под Android (Kotlin) и iOS (Swift), что помогает в создании плагинов для Flutter и решении специфичных для платформы задач.
Пример интеграции: При разработке одного из приложений мне потребовалось получить уровень заряда батареи. Я реализовал это через MethodChannel.
Код на стороне Flutter (Dart):
import 'package:flutter/services.dart';
static const platform = MethodChannel('samples.flutter.dev/battery');
Future<int> _getBatteryLevel() async {
int batteryLevel;
try {
final result = await platform.invokeMethod('getBatteryLevel');
batteryLevel = result;
} on PlatformException catch (e) {
// Обработка ошибок нативной платформы
batteryLevel = -1;
}
return batteryLevel;
}
Код на стороне Android (Kotlin):
import android.content.Context
import android.content.Context.BATTERY_SERVICE
import android.os.BatteryManager
import io.flutter.embedding.android.FlutterActivity
import io.flutter.embedding.engine.FlutterEngine
import io.flutter.plugin.common.MethodChannel
class MainActivity : FlutterActivity() {
private val CHANNEL = "samples.flutter.dev/battery"
override fun configureFlutterEngine(flutterEngine: FlutterEngine) {
super.configureFlutterEngine(flutterEngine)
MethodChannel(flutterEngine.dartExecutor.binaryMessenger, CHANNEL).setMethodCallHandler {
call, result ->
if (call.method == "getBatteryLevel") {
val batteryLevel = getBatteryLevel()
if (batteryLevel != -1) {
result.success(batteryLevel)
} else {
result.error("UNAVAILABLE", "Battery level not available.", null)
}
} else {
result.notImplemented()
}
}
}
private fun getBatteryLevel(): Int {
val batteryManager = getSystemService(Context.BATTERY_SERVICE) as BatteryManager
return batteryManager.getIntProperty(BatteryManager.BATTERY_PROPERTY_CAPACITY)
}
}
Такой опыт позволяет писать более эффективные и глубоко интегрированные с платформой Flutter-приложения.