- PVSM.RU - https://www.pvsm.ru -
Сегодня (8 мая 2019) мы объявляем о релизе Dart 2.3 SDK с новыми языковыми конструкциями, которые улучшают ваш опыт разработки при создании пользовательских интерфейсов, новой поддержкой инструментов для разработки Flutter UI и двумя новыми веб-сайтами: dart.dev [1] и pub.dev [2].
Каждый год мы с нетерпением ждем опрос разработчиков StackOverflow Developer Survey [3], который предоставляет полный набор данных о тенденциях в разработке и настроениях разработчиков по отношению к различным технологиям. В этом году данные показали рост популярности и осведомленности о Dart, который впервые вошел в список самых любимых языков и занял место рядом с другими популярными языками, такими как JavaScript, C# и Go и впереди таких, как C++, F# и R. В то же время наши хорошие друзья в сообществе Flutter
заняли третье место в списке самых любимых фреймворков [4]. На Codementor в прошлом месяце опрос на тему, какие языки программирования стоит и не стоит учить, также сообщил хорошие новости:
"Два языка программирования, которые действительно заслужили звание "Самые улучшенные", — это Dart и Ruby." Codementor, Апрель 2019 [источник] [5]
Мы хотели бы выразить большую благодарность всем разработчикам в сообществе Dart. Для нас очень важно видеть, как вы принимаете Dart, даете обратную связь и продолжаете быть с нами, когда мы пытаемся создать лучший оптимизированный для клиента язык для быстрых приложений, которые работают на любой платформе.
Говоря о разработке "клиентов", важно сказать, что один из давних совместных проектов команд Dart и Flutter дает отличные возможности для создания пользовательского интерфейса с помощью Dart без необходимости в языке разметки. Мы считаем, что использование одного языка для поведения и представления имеет достаточно преимуществ. К ним относятся сокращение переключений контекста, отсутствие необходимости изучать два языка и предоставляя использование всех свойств абстракций языка программирования общего назначения при создании пользовательского интерфейса.
За последние несколько релизов мы сделали несколько улучшений, таких как упрощение кода для создания виджетов [6], добавление автоматического преобразования int-to-double [7] и добавление Set литералов [8]. В Dart 2.3 мы делаем еще один большой шаг вперед с тремя новыми конструкциями для создания пользовательского интерфейса, связанного со списками, условиями и повторениями в списках.
UI можно рассматривать как дерево узлов виджетов. Некоторые узлы содержат списки виджетов, например, список прокручиваемых элементов. Часто эти списки составляются из других списков. Для этого мы добавили spread оператор [9] для "распаковки"
элементов одного списка в другой. В следующем примере buildMainElements()
возвращает список виджетов, который затем распаковывается во внешний список с помощью оператора spread …
:
Widget build(BuildContext context) {
return Column(children: [
Header(),
...buildMainElements(),
Footer(),
]);
}
Другой распространенной задачей пользовательского интерфейса является включение определенного элемента на основе условия. Например, вы можете включить кнопку "Далее" на всех страницах, кроме последней. С Dart 2.3 вы можете сделать это, используя collection if [10]:
Widget build(BuildContext context) {
return Column(children: [
Text(mainText),
if (page != pages.last)
FlatButton(child: Text('Next')),
]);
}
Наконец, часто необходимо построить список из повторяющихся элементов. Вы можете сделать такой список, используя collection for [10]:
Widget build(BuildContext context) {
return Column(children: [
Text(mainText),
for (var section in sections)
HeadingAction(section.heading),
]);
}
Так как эти три новые возможности возможности языка, а не разметки, то они могут быть использованы в любом контексте, где вы работаете с коллекциями. Данные конструкции вошли в релиз Flutter 1.5 [11] и доступны в релизе Dart 2.3 [12], который вы уже можете скачать. Мы также добавили новые правила, которые можно настроить в анализаторе [13], чтобы применение новых возможностей spread [14], collection if [15] и collection for [16] было рекомендованным.
Для получения подробной информации о всей работе, которая была сделана, чтобы добавить эти возможности, ознакомьтесь с недавней статьей [17] от Bob Nystrom (он же munificentbob [18]), инженера в команде Dart.
Мы также хотели бы выразить нашу благодарность разработчикам, участвовавших в исследованиях UX, которые были важны для формирования этих новых языковых конструкций.
Дополнительно к улучшениям разработки на Dart мы также расширили поддержку IDE, добавив новый функционал UI Guides
. UI Guides
представляют собой горизонтальные и вертикальные линии, отображенные в коде пользовательского интерфейса, что упрощает просмотр древовидной структуры метода build ()
во Flutter. Ниже пример (из приложения Calculator), где UI Guides
показывают, что пользовательский интерфейс построен из Expanded Column
, содержащего несколько KeyRows
, каждая из которых содержит NumberKeys
.
UI Guides
доступны в версии 35.2 [19] плагина для IntelliJ IDEA и Android Studio. Чтобы включить, выберите Preferences > Languages & Frameworks > Flutter > UI Guides
. Мы надеемся добавить аналогичную поддержку в VS Code в более поздних релизах.
Наконец, мы заметили, что разработчики часто используют завершение кода в своих IDE для изучения API. Завершение кода хорошо работало для изучения API в библиотеках, которые вы уже импортировали, но оно не было доступно для API в библиотеках, которые еще не импортированы. Наши инструменты теперь могут поддерживать последний вариант использования: вы можете вызвать завершение кода для любого префикса, и вы увидите завершения для всех API в текущем пакете, пакеты, от которых он напрямую зависит, и SDK. Если вы выберете завершение из еще не импортированной библиотеки (помечено Auto import
, как показано в следующей анимации), инструмент добавит инструкцию import для вас.
Данная функция автоматического импорта доступна в VS Code в плагине Dart с версии 2.26 [20], в IntelliJ 2019.1 и предстоящем релизе Android Studio 3.5.
И последнее, но не менее важное: последние несколько месяцев мы были очень заняты созданием нового веб-сайта для платформы Dart: dart.dev [1]
Сайт имеет совершенно обновленную главную страницу, ориентированную на объяснение основных преимуществ платформы Dart. Мы также обновили страницы документации, чтобы иметь лучшую навигацию и большую визуальную привлекательность. Наконец, мы провели огромную реорганизацию всего контента, чтобы упростить его поиск, и добавили новые страницы для основного контента, который отсутствовал раньше.
Аналогичным образом мы визуально обновили сайт пакетов Pub и переместили его на новый удобный URL: pub.dev [2]
Мы будем рады услышать ваши отзывы по обоим сайтам. Если вы нашли проблему или у вас есть предложение, пожалуйста, создайте issue
в dart.dev issue [21] или pub.dev issue [22] трекере. Спасибо за вашу поддержку!
Автор: sharpfellow
Источник [23]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/dart/317322
Ссылки в тексте:
[1] dart.dev: https://dart.dev
[2] pub.dev: https://pub.dev
[3] StackOverflow Developer Survey: https://insights.stackoverflow.com/survey/2019
[4] самых любимых фреймворков: https://insights.stackoverflow.com/survey/2019#technology-_-most-loved-dreaded-and-wanted-other-frameworks-libraries-and-tools
[5] [источник]: https://www.codementor.io/blog/worst-languages-2019-6mvbfg3w9x
[6] создания виджетов: https://medium.com/dartlang/announcing-dart-2-80ba01f43b6
[7] int-to-double: https://medium.com/dartlang/announcing-dart-2-1-improved-performance-usability-9f55fca6f31a
[8] Set литералов: https://medium.com/dartlang/announcing-dart-2-2-faster-native-code-support-for-set-literals-7e2ab19cc86d
[9] spread оператор: https://dart.dev/guides/language/language-tour#spread-operator
[10] collection if: https://dart.dev/guides/language/language-tour#collection-operators
[11] Flutter 1.5: https://medium.com/flutter-io/announcing-flutter-1-5-d203c6072e5c
[12] Dart 2.3: https://dart.dev/get-dart
[13] настроить в анализаторе: https://dart.dev/guides/language/analysis-options#enabling-linter-rules
[14] spread: http://dart-lang.github.io/linter/lints/prefer_spread_collections.html
[15] collection if: http://dart-lang.github.io/linter/lints/prefer_if_elements_to_conditional_expressions.html
[16] collection for: http://dart-lang.github.io/linter/lints/prefer_for_elements_to_map_fromIterable.html
[17] с недавней статьей: https://medium.com/dartlang/making-dart-a-better-language-for-ui-f1ccaf9f546c
[18] munificentbob: https://twitter.com/munificentbob
[19] версии 35.2: https://plugins.jetbrains.com/plugin/9212-flutter
[20] версии 2.26: https://dartcode.org/releases/v2-26/
[21] dart.dev issue: https://github.com/dart-lang/site-www/issues
[22] pub.dev issue: https://github.com/dart-lang/pub-dartlang-dart/issues
[23] Источник: https://habr.com/ru/post/451318/?utm_campaign=451318
Нажмите здесь для печати.