У меня есть приложение, созданное во Flutter, которое работает только на Android, и у него есть один экран, полностью созданный в нативном коде.
Теперь новый запрос от менеджера проекта заключается в том, чтобы добавить на этот собственный экран кнопку, которая открывает новую страницу. Я хочу сделать эту страницу (активность) полностью во Flutter, но я не могу заставить ее работать, как бы я ни пытался.
Вот как выглядит приложение: Страница Flutter (MainActivity) -> Собственная страница (другое действие) -> Новая флаттер-страница (третье действие)
ПРИЛОЖЕНИЕ НЕ ЯВЛЯЕТСЯ ВСТРОЕННЫМ ПРИЛОЖЕНИЕМ, ЭТО ПОЛНОЕ ПРИЛОЖЕНИЕ FLUTTER С ТОЛЬКО ОДНОЙ СОБСТВЕННОЙ СТРАНИЦЕЙ
Кто-нибудь знает как это сделать?
Doctor summary (to see all details, run flutter doctor -v):
[√] Flutter (Channel stable, v1.2.1, on Microsoft Windows [versão 10.0.17763.379], locale pt-BR)
[√] Android toolchain - develop for Android devices (Android SDK version 28.0.3)
[√] Android Studio (version 3.3)
[√] IntelliJ IDEA Community Edition (version 2019.1)
[√] VS Code (version 1.30.1)
[√] Connected device (1 available)
• No issues found!
Что ты имеешь в виду? Вы можете показать мне образец?
Примерно так: stackoverflow.com/a/36775658/2413303
Не сработает, потому что нативная страница — это полноценная активность, а не просто представление.
Вы на 100% уверены в этом? Похоже на просто взгляд на меня. Конечно, было бы проще анимировать его, если бы он не был ContentView, но если бы он существовал внутри FrameLayout, если это возможно. Интересно, существует ли FlutterFragmentDelegate. Хотя, если нет, написать его не составит труда.
Не могли бы вы просто "подделать" это? завершить собственный вид и вернуться к активности флаттера, но изменить состояние флаттер-приложения, чтобы оно выглядело так, как будто оно было запущено нажатием кнопки? В противном случае взгляните на файл руководство по добавлению флаттера в существующее приложение. View flutterView = Flutter.createView( MainActivity.this, getLifecycle(), "route1" );
@herbert Я пытался создать еще один FlutterActivity, но по какой-то причине плагины перестали работать, например, SharedPreferences, он возвращает пустые значения каждый раз, когда я пытаюсь что-то получить от него. Кроме того, по какой-то причине в моем java-классе «Flutter» нет методов с именем «createView».
Ключ был GeneratedPluginRegistrant, который вызывал проблемы. Теперь я мог заставить его работать так:
class ANewFluterActivity : FlutterActivity() {
override fun createFlutterView(context: Context): FlutterView {
val matchParent = WindowManager.LayoutParams(-1, -1)
val nativeView = this.createFlutterNativeView()
val flutterView = FlutterView(this, null as AttributeSet?, nativeView)
flutterView.setInitialRoute("YOUR_NEW_ROUTE")
flutterView.layoutParams = matchParent
this.setContentView(flutterView)
return flutterView
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
GeneratedPluginRegistrant.registerWith(this) //THIS IS THE SECRET TO MAKE PLUGINS WORK PROPERLY
}
}
Имейте в виду, что это запустит новый движок, поэтому для этого есть время загрузки.
Нельзя ли поменять местами взгляды?