e: C:\flutter\POC\contacts\android\app\src\main\kotlin\com\example\contacts\MainActivity.kt: (98, 58): Только безопасные (?.) или ненулевые утверждения (! !.) разрешены вызовы для получателя, допускающего значение NULL, типа FlutterEngine?
ОШИБКА: сборка не удалась с исключением.
Ошибка при выполнении org.jetbrains.kotlin.compilerRunner.GradleCompilerRunnerWithWorkers$GradleKotlinCompilerWorkAction Ошибка компиляции. Смотрите журнал для более подробной информации
Запустите с параметром --stacktrace, чтобы получить трассировку стека. Запустите с параметром --info или --debug, чтобы получить больше выходных данных журнала. Запустите с параметром --scan, чтобы получить полную информацию.
ПОСТРОЙКА НЕ ПРОШЛА через 11 секунд Исключение: задача Gradle assembleDebug не удалась с кодом выхода 1
Я хочу получить доступ к контактам пользователя, используя каналы платформы. Это мой файл кода пользовательского интерфейса. Это мой файл MainActivity.kt.
Просто измените строку 98 в MainActivity
на:
flutterEngine?.let {
val channel = MethodChannel(it.dartExecutor.binaryMessenger, "com.example.contacts")
}
В Котлине (и многих других языках) есть понятие обнуляемых и ненулевых типов. В вашем коде flutterEngine
объявлен как обнуляемый, но вы используете его как ненулевой тип, отсюда и ошибка компиляции.
Вам нужно точно описать, что должно произойти, когда объект flutterEngine
имеет значение null, а также когда он не равен нулю. Один из способов — использовать функцию области видимости let :
flutterEngine?.let { notNullFlutterEngine ->
// Use notNullFlutterEngine as you previously did.
val channel = MethodChannel(notNullFlutterEngine.dartExecutor.binaryMessenger, "com.example.contacts")
channel.invokeMethod("getContacts", contacts)
}
Я настоятельно рекомендую прочитать ранее связанные страницы в документации.