Null safety в Dart — подробный разбор

Подробно разбираемся с Null Safety в языке Dart.

Из этого видео вы узнаете:

  • Проблема: зачем нужен null safety.
  • Что такое sound null safety?
  • Как меняется система типов в Dart c введением null safety.
  • Что добавилось в синтаксисе и какие новые ключевые слова появились в языке
  • Как выполнить миграцию вашего проекта или пакета на null safety.

Разбираемся с декораторами в JavaScript

Концепцию декораторов можно рассматривать с разных сторон. Это и шаблон проектирования описанный в известной книге GOF и подход применяемый в функциональном программировании для построения композиции функций. Как правило, когда говорят о декораторах в контексте ECMA Script, то под этим подразумевают функции, которые могут применяться к другим функциям или объектам для изменения или расширения их поведения. Иначе говоря, эти функции декорируют (оборачивают) другие функции или объекты.

Читать →

Flutter 2. Что нового

3 марта 2021 в рамках мероприятия Flutter Engage была представлена новая версия фреймворка — Flutter 2. И это действительно мажорный апдейт! Вместе с новой версией Flutter вышла и новая версия Dart 2.12, которая принесла весьма ожидаемый null safety (ура!). Это настолько крутая фича, что язык тоже заслуживал бы мажорной версии, но разработчики специально не стали этого делать, т.к. новая версия не нарушает обратной совместимости (!).

Для того, чтобы рассказать что нового во Flutter 2 и Dart 2.12, я записал видео. Приятного просмотра!

Читать →

Функциональное программирование ч. 1

В последнее время мы все чаще и чаще слышим о функциональном программировании. Все новые языки так или иначе добавляют элементы «функциональщины», а ООП все чаще ругают, приводя как альтернативу в том числе и функциональный подход. Но что же такое функциональное программирование?

Сегодня мы подробно рассказываем о том, что такое функциональное программирование, какие есть языки функционального программирования и чем функциональное программирование отличается от императивного.

Это первая часть большого доклада, во второй части речь пойдет о языке F# и функциональном программировании в F#.

 

Двоичный поиск

Задавлись ли вы вопросом, в очередной раз используя поиск файлов в ОС, за которой работаете, почему он выполняется так медленно? Нет, даже тааааааак медленно? Читать →

(Вредные) советы для разработки на Flutter

Недавно я наткнулся на статью Tips for Coding with Flutter. И не просто где-то в самом темном закоулке Интернета, а прямо Medium мне прислал ее в подборке, в качестве рекомендации. Т.е. статья весьма популярна и её прочитает много разработчиков, в том числе и начинающих.

Я начал читать и то, что я увидел — мне совсем не понравилось. Некоторые советы действительно хорошие, но некоторые — весьма спорные. Давайте пойдем по порядку.

Именование

Naming Convention

Libraries, packages, directories, and source files should be in lowercase with underscores in between words like this:

library dart_dynamic_links;
import 'socket/socket_manager.art';

Classes, enums, extension names, and typedefs should start in uppercase like this :

class MainSection {...}
enum ItemSelectionTemp {...}
extension MyList<F> on List<F> {...}
typedef Definition<D> = bool function(D value);

Constants, variables, parameters, and named parameters should start with lowercase then the other words start with uppercase just like this example:

const magazinePrice = 4.20;
var itemsOfSchools;
final urlPlacement = RegExp(‘^([a-z]+):');
void magSum(int magazinePrice) {...}

Здесь лучше всего просто придерживаться официальных рекомендаций 

https://dart.dev/guides/language/effective-dart/style 

https://dart.dev/guides/language/effective-dart/design#names

Там описание более полное, с корректными примерами и пояснениями. В отличие от того, что мы видим в статье.

Следующий совет: «Указывайте тип для членов класса»

Specify Types for Classes Members

It’s important that you always specify the type of member when the values are known. You should avoid using var when possible.

int days = 22;
final vehichle car = vehichle();
String name = 'Kevin';
const int timeUntilEnd = 120;

С приведенными примерами указание типа не имеет смыла, об этом и говорится в Effective Dart. Тип нужно указывать когда он не очевиден, а что хорошего в дублировании одного и того же слова в строчке final Vehichle car = Vehichle();  – решительно не понятно.

Читать →

Исправляем артефакты на экране запуска в Android

Пробуем новый формат видео: в серии How To Fix It мы будем делиться решением проблем, с которыми сталкиваемся в процессе разработки.

Сегодня расскажем как исправить черные прямоугольнике на экране запуска в Android. Подписывайтесь на наш канал, чтобы не пропустить новые видео!

Разработка Flutter — плагина под Android

Доброго времени суток! Flutter, имеет большое коммьюнити, огромное множество пакетов и плагинов, но всего не предусмотришь и, рано или поздно, разработчик сталкивается с задачей написания своего плагина, и сегодня рассмотрим как это сделать. Для примера возьмем несложный, но включающий многие аспекты разработки, плагин шаринга из приложения.
Читать →