Основы дартс

Flutter

В этой статье мы не будем говорить о знании Flutter, а поговорим о базовых знаниях Dart.

Давайте взглянем на введение в Dart в Википедии:

Dart(подходитВсемирная сетьизОткрытый исходный кодЯзык программирования,Зависит отGoogleвозглавить разработкуОктябрь 2011 г.общественный. Его команда разработчиков состоит изGoogle Chromeбраузердвигатель V8лидер группыЛарс Баркерхозяин,Цель состоит в том, чтобы стать структурированным языком веб-разработки следующего поколения.

аналогичныйJavaScript, Дарт такжеобъектно-ориентированныйязык, но он используетпрограммирование на основе классов. это только позволяетединоличное наследство, грамматический стиль близок кC язык.

Затем откройте официальный сайт Dart:dart.dev, то, что приходит в поле зрения:

эмммм... Очевидно, что большинство людей, которые знают Dart, теперь делают это из-за Flutter, что соответствует его целям.Стать языком структурированной веб-разработки следующего поколенияКажется, немного не так. (Однако Flutter для Интернета был выпущен вместе с Flutter 1.5.)

Но не имеет значения, независимо от того, какова его первоначальная цель, поскольку мы хотим выучить трепетание сейчас, нам нужно понять Дарт, язык развития.

Без дальнейших церемоний, давайте начнем.

Прежде всего, нам нужно знать, что Dart — это чисто объектно-ориентированный язык, то есть в Dart все является объектом.

Как выглядит код Dart

Кажется, что код Dart, который мы видим, весь виден из Flutter, скобка в скобке, много скобок.

Итак, как выглядит стандартный код Dart:

// 定义个方法。
printNumber(num aNumber) {
  print('The number is $aNumber.'); // 在控制台打印内容。
}

// 这是程序执行的入口。
main() {
  var number = 42; // 定义并初始化一个变量。
  printNumber(number); // 调用一个方法。
}

Кажется, это не отличается, за исключением того, что есть число, которое кажется немного другим (потому что я работаю на Android, поэтому я увидел эту проблему, когда пришел).

Итак, начнем с переменных.

Переменная

объявить переменную

В Dart мы объявляем переменную двумя способами:

var _str = '';
int _num = 1;

Все методы и переменные, начинающиеся со знака подчеркивания, являются закрытыми.

Мы можем использовать var для объявления переменной, а также можем указать тип переменной.

Итак, когда и как мы объявляем переменные?

в состоянии пройтиРекомендация по стилю кода DartВот приходит запрос:

Для локальных переменных используйтеvarВместо конкретных типов определять локальные переменные.

Для закрытых переменных-членов рекомендуется объявлять переменную с типом, который указывает переменную.

постоянный

В Dart мы объявляем константы двумя способами:

const String constString = "";
final String _finalString;

Один из них — использовать const, а другой — использовать final.

Какая разница между двумя?

const

const должен быть назначен во время компиляции, и если const находится в классе, он должен быть определен как static const.

final

Разумно сказать, что final не определяется как константа, а должна называться переменной, которую нельзя изменить.

Потому что переменные, измененные с помощью final, могут быть назначены только один раз при инициализации класса. Мы не можем видеть его значение во время компиляции.

Все встроенные типы переменных

Dart имеет встроенную поддержку следующих типов:

  • numbers
  • strings
  • booleans
  • списки (также известные как спискиarrays)
  • maps
  • руны (для представления символов Unicode в строках)
  • symbols

просто скажи два

numbers

Dart поддерживает два числовых типа int double , оба из которых являются подклассами num

Другими словами, пока вы определяете числовой тип, вы можете использовать num для его получения.

strings

Строки могут быть объявлены в двойных или одинарных кавычках.

Выражения могут использоваться в строках${}, вы также можете использовать знак + для объединения строк.

Больше ничего не скажу, так как последние два, вероятно, не используются.

метод

Dart — настоящий объектно-ориентированный язык, методы также являются объектами и имеют тип,FunctionТипы.

То есть мы можем присвоить метод переменной и передать его другому методу.

простой способ

определить простой метод:

Widget build(BuildContext context) {
  return Container();
}

Возьмите сборку во Flutter, это самый простой метод Dart.

Тип возвращаемого значения — Widget, а параметр — BuildContext. Внутри return Container() есть только одна строка кода;

Тогда для метода только с одним выражением мы можем написать это так:

Widget build(BuildContext context) => Container();

это=> Container();Синтаксис{ return Container; }Аббревиатура формы.=>Грамматика также известна какжирная стрелаграмматика.

необязательный параметр

Методы могут иметь два типа параметров: обязательные и необязательные. Обязательным параметрам предшествует список параметров, за которыми следуют необязательные параметры.

В Dart также есть два типа необязательных параметров: необязательные именованные параметры и необязательные позиционные параметры.

необязательные именованные параметры
String demo(String name, {int age}){
  String result = '我的名字叫$name';
  if(age != null){
    result += ',我今年$age岁了';
  }
  return result;
}

Это необязательные именованные параметры, мы называем это:

demo('HaSaKi', age: 18);
необязательные позиционные аргументы

Давайте прямо сейчас преобразуем демонстрационный метод:

String demo(String name, [int age]){
  String result = '我的名字叫$name';
  if(age != null){
    result += ',我今年$age岁了';
  }
  return result;
}

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

Чтобы позвонить так:

demo('HaSaKi', 18);

значение параметра по умолчанию

При определении метода мы можем использовать = для определения значения параметра по умолчанию.

Значение по умолчанию должно быть константой времени компиляции.

Например:

String demo(String name, {int age = 18}){
  String result = '我的名字叫$name';
  if(age != null){
    result += ',我今年$age岁了';
  }
  return result;
}

Этот метод всегда будет выводить, даже если значение возраста не передано.Мне 18 лет в этом году. Потому что задано значение возраста по умолчанию.

Добрый

Классы в Dart аналогичны Java с одиночным наследованием, а Object является надклассом всех классов.

Определите класс:

class Person{
  String name;
  int age;
  
  say(){
    assert(name == null);
    print('我叫$name');
  }
}

Можно сказать, что он такой же, как и другие языки.

Здесь что-то другое.

Упрощенное переменное назначение

В других языках мы часто используем конструкторы для присвоения значений переменным класса.

Поскольку эта потребность настолько распространена, Dart предоставляет синтаксический сахар:

class Person {
  String name;
  int age;
  
  Person(this.name, this.age);

  say() {
    assert(name == null);
    print('我叫$name');
  }
}

именованный конструктор

В Dart вы можете использовать именованные конструкторы, чтобы более четко выразить свое намерение:

class Person {
  String name;
  int age;

  Person.fromJson(Map json) {
    this.name = json['name'];
    this.age = json['age'];
  }

  say() {
    assert(name == null);
    print('我叫$name');
  }
}


Завод-конструктор

Если конструктор не всегда возвращает новый объект, используйтеfactoryдля определения этого конструктора.

Мы также часто используем синглтоны.Мы можем использовать фабричный конструктор, чтобы реализовать синглтоны:

class Person {
  static final Person _person = Person._internal();

  factory Person() {
    return _person;
  }

  Person._internal();
}


Как видите, мы определяем частный именованный конструктор, а также определяем конструктор фабрики.

Определите окончательный объект Person и верните его с помощью фабричного конструктора.

Давайте проверим это:

print(Person() == Person());

flutter: true

Можно доказать, что это не проблема написать.

Каскадные звонки

Когда мы обычно присваиваем значение классу или вызываем метод, мы пишем это так:

var person = Person();
person.name = '哈哈';
person.age = 18;
person.say();

Это хлопотно? Dart также учитывает это для нас:

Person()
  ..name = '哈哈'
  ..age = 18
  ..say();

Суммировать

В настоящее время давайте напишем так много базовых знаний.Вы видите, что Dart многое предусмотрел для наших разработчиков, и это то, как должен выглядеть современный язык.

И теперь код Dart, который мы видим во Flutter, — это лишь верхушка айсберга, и я продолжу писать серию Dart для вас в будущем.

Пожалуйста, продолжайте смотреть.