С чего мне начать работать над поддержкой mvvmcross Gtk? - PullRequest
3 голосов
/ 06 июня 2019

Мне нужна поддержка платформы Gtk в моем кроссплатформенном приложении. Это приложение было создано с использованием mvvmcross. Я проверил и не нашел ни одной существующей реализации "платформы" Gtk для фреймворка. У меня есть время поработать над этим. С чего мне начать? Какие подводные камни?

1 Ответ

1 голос
/ 06 июня 2019

Обновление Я видел, как вы прокомментировали здесь https://github.com/MvvmCross/MvvmCross/pull/2697, вероятно, лучше держать чат в проблеме, а не SO.

Вы видели твиттер конво ? который затем ссылается на эту проблему GitHub

Из комментария Слоджа (Стюарта) он дает основные шаги, необходимые для MVVMCross 3.1:

Есть люди, которые делали это раньше

Я - для основных платформ здесь

@ deapsquatter и @ loqu8 / Tim для Mac

@ et-nowis для Unity / Ngui - https://github.com/et-nowis/mvx-unity-ngui/blob/master/Assets/External/MvvmCross/Cirrious/Cirrious.MvvmCross.Binding.Unity/MvxUnityBindingBuilder.cs

Теперь, когда версия 3.1 достаточно стабильна, основные шаги, необходимые для полного Платформа являются:

  1. Начните с CrossCore - вам нужно написать небольшой набор расширений для платформы - как те, в каждом из https://github.com/MvvmCross/MvvmCross/tree/v3.1/CrossCore - довольно Что нужно каждой платформе, зависит от платформы. Главное, что у платформ Droid / Touch есть папки Views - но эти на самом деле может не понадобиться вообще для "просто связывания" - https://github.com/MvvmCross/MvvmCross/tree/v3.1/CrossCore/Cirrious.CrossCore.Droid/Views
  2. Сборка библиотеки привязок - она ​​начинается с конкретной платформы BindingBuilder - каждый из них просто добавляет свои собственные «шаблоны привязки» -TargetFactories - для платформы. Смотрите примеры, используемые в:
  3. Создайте слой платформы Mvvm. Обычно это просто добавление Настройка для конкретной платформы, Presenter (он же NavigationService) и BasePage (например, базовая активность, базовый UIViewController, базовая страница) классы. Сложности здесь обычно бывают такими:
    • поддержка загрузки плагинов (они должны работать довольно просто, используя Assembly.Load, но иногда это не так просто, как должно быть)
    • разработка навигации
    • разработка "надгробия" (надеюсь, не проблема для настольных платформ)
    • выяснение, где хранить и где очищать привязки (в их обязательном контексте) - создание привязок всегда легче, чем очистка их вверх.
  4. Перенос отдельных плагинов по мере необходимости .... Как начать, что учитывать, известные подводные камни и т. д.

Это основные шаги для начала

Не думаю, что это такая большая работа, особенно потому, что v3 хорош хорошо с точки зрения портативной структуры!

За "Что учитывать" и "известные подводные камни" извините, но я действительно не идея - я действительно не написал один "из нового", так как MvvmCross v1 и тогда это был совсем другой процесс.

Оставив это открытым, Если вы начнете идти по этому пути, тогда, пожалуйста, давайте просто задавайте вопросы в этой теме - вот что мы пытались сделать 215 для единства.

Вам нужно будет адаптировать эти шаги к версии, которую вы используете. Кроме того, ссылки, приведенные выше, будут сломаны для версии 3.1. Таким образом, вам придется сопоставить их с более новыми эквивалентами.

В дополнение к этому, я знаю, что недавно был добавлен Tizen, возможно, можно посмотреть, как они были добавлены, чтобы получить представление о том, как это сделать.

Я думаю, что это было бы возможно, но довольно сложное дело, Удачи!

...