diff --git a/lec2/.gitignore b/lec2/.gitignore
new file mode 100644
index 0000000..3a85790
--- /dev/null
+++ b/lec2/.gitignore
@@ -0,0 +1,3 @@
+# https://dart.dev/guides/libraries/private-files
+# Created by `dart pub`
+.dart_tool/
diff --git a/lec2/.idea/.gitignore b/lec2/.idea/.gitignore
new file mode 100644
index 0000000..26d3352
--- /dev/null
+++ b/lec2/.idea/.gitignore
@@ -0,0 +1,3 @@
+# Default ignored files
+/shelf/
+/workspace.xml
diff --git a/lec2/.idea/caches/deviceStreaming.xml b/lec2/.idea/caches/deviceStreaming.xml
new file mode 100644
index 0000000..af74dbf
--- /dev/null
+++ b/lec2/.idea/caches/deviceStreaming.xml
@@ -0,0 +1,318 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/lec2/.idea/libraries/Dart_Packages.xml b/lec2/.idea/libraries/Dart_Packages.xml
new file mode 100644
index 0000000..9cfe7ad
--- /dev/null
+++ b/lec2/.idea/libraries/Dart_Packages.xml
@@ -0,0 +1,412 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/lec2/.idea/libraries/Dart_SDK.xml b/lec2/.idea/libraries/Dart_SDK.xml
new file mode 100644
index 0000000..5f8cc5f
--- /dev/null
+++ b/lec2/.idea/libraries/Dart_SDK.xml
@@ -0,0 +1,29 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/lec2/.idea/misc.xml b/lec2/.idea/misc.xml
new file mode 100644
index 0000000..639900d
--- /dev/null
+++ b/lec2/.idea/misc.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/lec2/.idea/modules.xml b/lec2/.idea/modules.xml
new file mode 100644
index 0000000..af91433
--- /dev/null
+++ b/lec2/.idea/modules.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/lec2/.idea/vcs.xml b/lec2/.idea/vcs.xml
new file mode 100644
index 0000000..94a25f7
--- /dev/null
+++ b/lec2/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/lec2/CHANGELOG.md b/lec2/CHANGELOG.md
new file mode 100644
index 0000000..effe43c
--- /dev/null
+++ b/lec2/CHANGELOG.md
@@ -0,0 +1,3 @@
+## 1.0.0
+
+- Initial version.
diff --git a/lec2/README.md b/lec2/README.md
new file mode 100644
index 0000000..b4deecb
--- /dev/null
+++ b/lec2/README.md
@@ -0,0 +1 @@
+A sample command-line application demonstrating dart language basics.
diff --git a/lec2/analysis_options.yaml b/lec2/analysis_options.yaml
new file mode 100644
index 0000000..dee8927
--- /dev/null
+++ b/lec2/analysis_options.yaml
@@ -0,0 +1,30 @@
+# This file configures the static analysis results for your project (errors,
+# warnings, and lints).
+#
+# This enables the 'recommended' set of lints from `package:lints`.
+# This set helps identify many issues that may lead to problems when running
+# or consuming Dart code, and enforces writing Dart using a single, idiomatic
+# style and format.
+#
+# If you want a smaller set of lints you can change this to specify
+# 'package:lints/core.yaml'. These are just the most critical lints
+# (the recommended set includes the core lints).
+# The core lints are also what is used by pub.dev for scoring packages.
+
+include: package:lints/recommended.yaml
+
+# Uncomment the following section to specify additional rules.
+
+# linter:
+# rules:
+# - camel_case_types
+
+# analyzer:
+# exclude:
+# - path/to/excluded/files/**
+
+# For more information about the core and recommended set of lints, see
+# https://dart.dev/go/core-lints
+
+# For additional information about configuring this file, see
+# https://dart.dev/guides/language/analysis-options
diff --git a/lec2/bin/main.dart b/lec2/bin/main.dart
new file mode 100644
index 0000000..4d9f000
--- /dev/null
+++ b/lec2/bin/main.dart
@@ -0,0 +1,414 @@
+// Импорт стороннего компонента
+
+
+// Функция
+void variablesAndDatatypes() {
+ // Переменные и типы данных
+ // Логическая переменная: истина (true) или ложь (false)
+ bool b = true;
+ // Целочисленная переменная
+ int i = 10;
+ // Вещественная переменная
+ double d = 10.001;
+ // Текстовая переменная
+ String s = 'Hello!';
+
+ // Коллекции
+ // Список (динамический)
+ List numbers = [1, 1, 2, 2, 3, 3];
+ numbers.add(4);
+ print(numbers);
+ Set names = {'Ivan', 'Ivan', 'John', 'John', 'Nick', 'Nick'};
+ names.add('Helen');
+ print(names);
+ Map dict = {1: 'one', 2: 'two'};
+ print(dict);
+ dict[0] = 'zero';
+ dict[1] = 'one!';
+ print(dict);
+}
+
+void record() {
+ const myRecord = ('text', a: 'one', b: true, c: 3);
+ print(myRecord);
+}
+
+void variables() {
+ // Определение типа переменной при объявлении
+ int i = 1;
+ // Автоматическое определение типа переменной при объявлении
+ var v = 1;
+ // Автоматическое определение типа переменной при объявлении
+ // с возможностью изменить тип переменной
+ dynamic d = 1;
+ print(d);
+ d = 'test';
+ print(d);
+ // Все типы данных в Dart являются наследниками класса Object
+ Object o = 1;
+}
+
+// Функция, которая возвращает значение
+int getValue() {
+ return 10;
+}
+
+void constants() {
+ const int i = 10;
+ const j = 10;
+ final int k = getValue();
+ final l = getValue();
+ final int m = 10;
+}
+
+void printSmthN(String s) {
+ print(s);
+}
+
+void printSmth(String? s) {
+ // Если s == null, то выводится правая часть выражения
+ // иначе будет выводится левая часть выражения
+ print(s ?? 'smth');
+}
+
+void printSmthUpper(String? s) {
+ // Если s == null, то выводится правая часть выражения
+ // иначе будет вызвана функция объекта s,
+ // а затем будет выводится левая часть выражения
+ print(s?.toUpperCase() ?? "SMTH");
+}
+
+void printWithError(String? s) {
+ print(s!.toUpperCase());
+}
+
+void nullables() {
+ int a = 10;
+ print(a);
+ int? b;
+ print(b);
+ //int c;
+ //print(c);
+
+ String hello = 'Hello!';
+ String? nullStr;
+ printSmthN(hello);
+ // printSmthN(nullStr);
+ printSmth(hello);
+ printSmth(nullStr);
+ printSmthUpper(hello);
+ printSmthUpper(nullStr);
+ printWithError(hello);
+ //printWithError(nullStr);
+}
+
+void formattedStrings() {
+ const a = 1;
+ const b = 2;
+ print('a + b');
+ // Пример интерполяции
+ print('$a + $b');
+ // Пример интерполяции
+ print('${a + b}');
+
+ // Пример интерполяции
+ const sum = '${a + b}';
+ // Пример соединения строк (конкатенация)
+ print('sum is ' + sum);
+ // Пример интерполяции
+ print('sum is $sum');
+}
+
+enum GenderType { man, woman, unknown }
+
+extension GenderTypeExt on GenderType {
+ void printGender() {
+ switch (this) {
+ case GenderType.man:
+ print('This is a man');
+ case GenderType.woman:
+ print('This is a woman');
+ default:
+ print('Unknown gender');
+ }
+ }
+}
+
+void enums() {
+ const gender = GenderType.man;
+
+ print('''
+ - This is a woman?
+ - ${gender == GenderType.woman}
+ ''');
+}
+
+void conditions() {
+ const value = 10;
+
+ if (value > 100) {
+ print('big value');
+ } else if (value > 50) {
+ print('middle value');
+ } else {
+ print('small value');
+ }
+
+ // Тернарный оператор
+ print(value > 100
+ ? 'big value'
+ : value > 50
+ ? 'middle value'
+ : 'small value');
+
+ switch (value) {
+ case > 100:
+ print('big value');
+ case > 50:
+ print('middle value');
+ default:
+ print('small value');
+ }
+
+ final valueType = switch (value) {
+ > 100 => 'big value',
+ > 50 => 'middle value',
+ _ => 'small value',
+ };
+ print(valueType);
+
+ const gender = GenderType.man;
+ switch (gender) {
+ case GenderType.man:
+ print('This is a man');
+ case GenderType.woman:
+ print('This is a woman');
+ default:
+ print('Unknown gender');
+ }
+
+ gender.printGender();
+}
+
+// Пример функции
+bool isAMan(GenderType gender) {
+ return GenderType.man == gender;
+}
+
+// Пример функции в функциональном стиле
+bool isAWoman(GenderType gender) => GenderType.woman == gender;
+
+// Пример функции с именованными и неименованными параметрами
+void myPrint(
+ String s, {
+ bool capitalize = false,
+ String? suffix,
+}) {
+ print('${capitalize ? s.toUpperCase() : s}${suffix ?? ''}');
+}
+
+// Данная функция будет работать с любым списком
+void printList(List list) {
+ if (list is List || list is List) {
+ print(list);
+ } else {
+ print('Unknown type ${list.runtimeType}');
+ }
+}
+
+// Примеры работы с циклами
+void loops() {
+ final list = [1, 2, 3, 4];
+
+ for (int i = 0; i < list.length; i++) {
+ print(list[i]);
+ }
+
+ for (final element in list) {
+ print(element);
+ }
+
+ int i = 0;
+ while (i < list.length) {
+ print(list[i]);
+ i++;
+ }
+
+ for (final element in list) {
+ if (element % 2 == 0) {
+ continue;
+ }
+ print(element);
+ }
+
+ for (final element in list) {
+ if (element % 2 != 0) {
+ continue;
+ }
+ print(element);
+ }
+
+ for (final element in list) {
+ if (element == 3) {
+ break;
+ }
+ print(element);
+ }
+}
+
+// Объявление класса
+class Car {
+ // Поля
+ final int maxSpeed;
+ final String? manufacturer;
+
+ double priceInDollars = 0;
+
+ // Конструктор
+ Car(this.maxSpeed, {this.manufacturer});
+
+ // Методы
+ bool canReachSpeed(int speed) => speed <= maxSpeed;
+
+ String getInfo() =>
+ 'car: ${manufacturer ?? 'unknown'}; max speed: $maxSpeed, price \$: ${priceInDollars.toStringAsFixed(2)}';
+
+ String get info =>
+ 'car: ${manufacturer ?? 'unknown'}; max speed: $maxSpeed, price \$: ${priceInDollars.toStringAsFixed(2)}';
+
+ set price(double priceInRubles) => priceInDollars = priceInRubles / 100;
+}
+
+// Пример работы с объектами класса Car
+void cars() {
+ final unknown = Car(100);
+ final lada = Car(110, manufacturer: 'VAZ');
+ lada.price = 26000.00;
+ final bmw = Car(120, manufacturer: 'BMW');
+ bmw.price = 104000.23;
+
+ print(unknown.getInfo());
+ print(unknown.info);
+ print(lada.getInfo());
+ print(lada.info);
+ print(bmw.getInfo());
+ print(bmw.info);
+ print(lada.canReachSpeed(120));
+ print(bmw.canReachSpeed(120));
+}
+
+class MyTest {
+ final int publicField;
+ final int _privateField = 10;
+
+ MyTest(this.publicField);
+}
+
+abstract class Vehicle {
+ final int maxSpeed;
+
+ Vehicle(this.maxSpeed);
+
+ bool canReachSpeed(int speed) => speed <= maxSpeed;
+}
+
+class Car2 extends Vehicle {
+ final String? manufacturer;
+
+ double priceInDollars = 0;
+
+ Car2(super.maxSpeed, {this.manufacturer});
+
+ // Именованный конструктор
+ Car2.lada(super.maxSpeed) : manufacturer = 'VAZ';
+
+ String get info => 'car2: ${manufacturer ?? 'unknown'}; max speed: $maxSpeed';
+}
+
+void cars2() {
+ final unknown = Car2(100);
+ final lada = Car2.lada(110);
+ final bmw = Car2(120, manufacturer: 'BMW');
+
+ print(unknown.info);
+ print(lada.info);
+ print(bmw.info);
+ print(lada.canReachSpeed(120));
+ print(bmw.canReachSpeed(120));
+}
+
+void main(List arguments) {
+ // Вывод данных в консоль
+ print('Hello!');
+
+ // Вызов функции
+ //variablesAndDatatypes();
+
+ //record();
+
+ //constants();
+
+ //variables();
+
+ //nullables();
+
+ // Использование Random из стороннего компонента dart:math
+ //print(Random().nextDouble());
+
+ // formattedStrings();
+
+ // enums();
+
+ // conditions();
+
+ // Пример работы с функциями
+ /*const gender = GenderType.man;
+ print(isAMan(gender));
+ print(isAWoman(gender));
+ const s = 'Hello';
+ myPrint(s);
+ myPrint(s, capitalize: true);
+ myPrint(s, suffix: '?');
+ myPrint(s, capitalize: true, suffix: '!');
+ myPrint(s, suffix: '!', capitalize: true);*/
+
+ // Пример работы с обобщениями (щаблонными типами)
+ /*printList([1, 2, 3, 4]);
+ printList([1.0, 2, 3, 4]);
+ printList(['1', '2', '3', '4']);
+ printList([1, '2', '3', '4']);*/
+
+ // Пример анонимных функций
+ /*[1, 2, 3, 4].forEach((int val) => print(val));
+ [1, 2, 3, 4].forEach(print);
+ print([1, 2, 3, 4].reduce((int a, int b) {
+ return a + b;
+ }));*/
+
+ // Примеры работы с циклами
+ // loops();
+
+ // cars();
+
+ /*final myTest = MyTest(2);
+ print(myTest.publicField);
+ print(myTest._privateField);
+
+ final myTest2 = MyTest2(2);
+ print(myTest2.publicField);
+ // print(myTest2._privateField);*/
+
+ // Пример работы со статическими полями класса
+ /*final st1 = MyStatic();
+ final st2 = MyStatic();
+ print(st1.static);
+ print(st2.static);
+ MyStatic.staticField++;
+ print(st1.static);
+ print(st2.static);
+ print(MyStatic.staticField);*/
+
+ // final v = Vehicle(10);
+
+ // cars2();
+}
diff --git a/lec2/dart.iml b/lec2/dart.iml
new file mode 100644
index 0000000..75734c9
--- /dev/null
+++ b/lec2/dart.iml
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/lec2/lib/mystatic.dart b/lec2/lib/mystatic.dart
new file mode 100644
index 0000000..9c7d327
--- /dev/null
+++ b/lec2/lib/mystatic.dart
@@ -0,0 +1,7 @@
+class MyStatic {
+ static int staticField = 1;
+
+ MyStatic();
+
+ int get static => staticField;
+}
diff --git a/lec2/lib/mytest2.dart b/lec2/lib/mytest2.dart
new file mode 100644
index 0000000..35ed422
--- /dev/null
+++ b/lec2/lib/mytest2.dart
@@ -0,0 +1,6 @@
+class MyTest2 {
+ final int publicField;
+ final int _privateField = 10;
+
+ MyTest2(this.publicField);
+}
diff --git a/lec2/pubspec.lock b/lec2/pubspec.lock
new file mode 100644
index 0000000..f4d6e0d
--- /dev/null
+++ b/lec2/pubspec.lock
@@ -0,0 +1,402 @@
+# Generated by pub
+# See https://dart.dev/tools/pub/glossary#lockfile
+packages:
+ _fe_analyzer_shared:
+ dependency: transitive
+ description:
+ name: _fe_analyzer_shared
+ sha256: "45cfa8471b89fb6643fe9bf51bd7931a76b8f5ec2d65de4fb176dba8d4f22c77"
+ url: "https://pub.dev"
+ source: hosted
+ version: "73.0.0"
+ _macros:
+ dependency: transitive
+ description: dart
+ source: sdk
+ version: "0.3.2"
+ analyzer:
+ dependency: transitive
+ description:
+ name: analyzer
+ sha256: "4959fec185fe70cce007c57e9ab6983101dbe593d2bf8bbfb4453aaec0cf470a"
+ url: "https://pub.dev"
+ source: hosted
+ version: "6.8.0"
+ args:
+ dependency: "direct main"
+ description:
+ name: args
+ sha256: "7cf60b9f0cc88203c5a190b4cd62a99feea42759a7fa695010eb5de1c0b2252a"
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.5.0"
+ async:
+ dependency: transitive
+ description:
+ name: async
+ sha256: "947bfcf187f74dbc5e146c9eb9c0f10c9f8b30743e341481c1e2ed3ecc18c20c"
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.11.0"
+ boolean_selector:
+ dependency: transitive
+ description:
+ name: boolean_selector
+ sha256: "6cfb5af12253eaf2b368f07bacc5a80d1301a071c73360d746b7f2e32d762c66"
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.1.1"
+ collection:
+ dependency: transitive
+ description:
+ name: collection
+ sha256: a1ace0a119f20aabc852d165077c036cd864315bd99b7eaa10a60100341941bf
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.19.0"
+ convert:
+ dependency: transitive
+ description:
+ name: convert
+ sha256: "0f08b14755d163f6e2134cb58222dd25ea2a2ee8a195e53983d57c075324d592"
+ url: "https://pub.dev"
+ source: hosted
+ version: "3.1.1"
+ coverage:
+ dependency: transitive
+ description:
+ name: coverage
+ sha256: c1fb2dce3c0085f39dc72668e85f8e0210ec7de05345821ff58530567df345a5
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.9.2"
+ crypto:
+ dependency: transitive
+ description:
+ name: crypto
+ sha256: ec30d999af904f33454ba22ed9a86162b35e52b44ac4807d1d93c288041d7d27
+ url: "https://pub.dev"
+ source: hosted
+ version: "3.0.5"
+ file:
+ dependency: transitive
+ description:
+ name: file
+ sha256: "5fc22d7c25582e38ad9a8515372cd9a93834027aacf1801cf01164dac0ffa08c"
+ url: "https://pub.dev"
+ source: hosted
+ version: "7.0.0"
+ frontend_server_client:
+ dependency: transitive
+ description:
+ name: frontend_server_client
+ sha256: f64a0333a82f30b0cca061bc3d143813a486dc086b574bfb233b7c1372427694
+ url: "https://pub.dev"
+ source: hosted
+ version: "4.0.0"
+ glob:
+ dependency: transitive
+ description:
+ name: glob
+ sha256: "0e7014b3b7d4dac1ca4d6114f82bf1782ee86745b9b42a92c9289c23d8a0ab63"
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.1.2"
+ http_multi_server:
+ dependency: transitive
+ description:
+ name: http_multi_server
+ sha256: "97486f20f9c2f7be8f514851703d0119c3596d14ea63227af6f7a481ef2b2f8b"
+ url: "https://pub.dev"
+ source: hosted
+ version: "3.2.1"
+ http_parser:
+ dependency: transitive
+ description:
+ name: http_parser
+ sha256: "40f592dd352890c3b60fec1b68e786cefb9603e05ff303dbc4dda49b304ecdf4"
+ url: "https://pub.dev"
+ source: hosted
+ version: "4.1.0"
+ io:
+ dependency: transitive
+ description:
+ name: io
+ sha256: "2ec25704aba361659e10e3e5f5d672068d332fc8ac516421d483a11e5cbd061e"
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.0.4"
+ js:
+ dependency: transitive
+ description:
+ name: js
+ sha256: c1b2e9b5ea78c45e1a0788d29606ba27dc5f71f019f32ca5140f61ef071838cf
+ url: "https://pub.dev"
+ source: hosted
+ version: "0.7.1"
+ lints:
+ dependency: "direct dev"
+ description:
+ name: lints
+ sha256: "976c774dd944a42e83e2467f4cc670daef7eed6295b10b36ae8c85bcbf828235"
+ url: "https://pub.dev"
+ source: hosted
+ version: "4.0.0"
+ logging:
+ dependency: transitive
+ description:
+ name: logging
+ sha256: "623a88c9594aa774443aa3eb2d41807a48486b5613e67599fb4c41c0ad47c340"
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.2.0"
+ macros:
+ dependency: transitive
+ description:
+ name: macros
+ sha256: "0acaed5d6b7eab89f63350bccd82119e6c602df0f391260d0e32b5e23db79536"
+ url: "https://pub.dev"
+ source: hosted
+ version: "0.1.2-main.4"
+ matcher:
+ dependency: transitive
+ description:
+ name: matcher
+ sha256: d2323aa2060500f906aa31a895b4030b6da3ebdcc5619d14ce1aada65cd161cb
+ url: "https://pub.dev"
+ source: hosted
+ version: "0.12.16+1"
+ meta:
+ dependency: transitive
+ description:
+ name: meta
+ sha256: e3641ec5d63ebf0d9b41bd43201a66e3fc79a65db5f61fc181f04cd27aab950c
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.16.0"
+ mime:
+ dependency: transitive
+ description:
+ name: mime
+ sha256: "801fd0b26f14a4a58ccb09d5892c3fbdeff209594300a542492cf13fba9d247a"
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.0.6"
+ node_preamble:
+ dependency: transitive
+ description:
+ name: node_preamble
+ sha256: "6e7eac89047ab8a8d26cf16127b5ed26de65209847630400f9aefd7cd5c730db"
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.0.2"
+ package_config:
+ dependency: transitive
+ description:
+ name: package_config
+ sha256: "1c5b77ccc91e4823a5af61ee74e6b972db1ef98c2ff5a18d3161c982a55448bd"
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.1.0"
+ path:
+ dependency: transitive
+ description:
+ name: path
+ sha256: "087ce49c3f0dc39180befefc60fdb4acd8f8620e5682fe2476afd0b3688bb4af"
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.9.0"
+ pool:
+ dependency: transitive
+ description:
+ name: pool
+ sha256: "20fe868b6314b322ea036ba325e6fc0711a22948856475e2c2b6306e8ab39c2a"
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.5.1"
+ pub_semver:
+ dependency: transitive
+ description:
+ name: pub_semver
+ sha256: "40d3ab1bbd474c4c2328c91e3a7df8c6dd629b79ece4c4bd04bee496a224fb0c"
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.1.4"
+ shelf:
+ dependency: transitive
+ description:
+ name: shelf
+ sha256: e7dd780a7ffb623c57850b33f43309312fc863fb6aa3d276a754bb299839ef12
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.4.2"
+ shelf_packages_handler:
+ dependency: transitive
+ description:
+ name: shelf_packages_handler
+ sha256: "89f967eca29607c933ba9571d838be31d67f53f6e4ee15147d5dc2934fee1b1e"
+ url: "https://pub.dev"
+ source: hosted
+ version: "3.0.2"
+ shelf_static:
+ dependency: transitive
+ description:
+ name: shelf_static
+ sha256: c87c3875f91262785dade62d135760c2c69cb217ac759485334c5857ad89f6e3
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.1.3"
+ shelf_web_socket:
+ dependency: transitive
+ description:
+ name: shelf_web_socket
+ sha256: "073c147238594ecd0d193f3456a5fe91c4b0abbcc68bf5cd95b36c4e194ac611"
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.0.0"
+ source_map_stack_trace:
+ dependency: transitive
+ description:
+ name: source_map_stack_trace
+ sha256: c0713a43e323c3302c2abe2a1cc89aa057a387101ebd280371d6a6c9fa68516b
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.1.2"
+ source_maps:
+ dependency: transitive
+ description:
+ name: source_maps
+ sha256: "708b3f6b97248e5781f493b765c3337db11c5d2c81c3094f10904bfa8004c703"
+ url: "https://pub.dev"
+ source: hosted
+ version: "0.10.12"
+ source_span:
+ dependency: transitive
+ description:
+ name: source_span
+ sha256: "53e943d4206a5e30df338fd4c6e7a077e02254531b138a15aec3bd143c1a8b3c"
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.10.0"
+ stack_trace:
+ dependency: transitive
+ description:
+ name: stack_trace
+ sha256: "73713990125a6d93122541237550ee3352a2d84baad52d375a4cad2eb9b7ce0b"
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.11.1"
+ stream_channel:
+ dependency: transitive
+ description:
+ name: stream_channel
+ sha256: ba2aa5d8cc609d96bbb2899c28934f9e1af5cddbd60a827822ea467161eb54e7
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.1.2"
+ string_scanner:
+ dependency: transitive
+ description:
+ name: string_scanner
+ sha256: "688af5ed3402a4bde5b3a6c15fd768dbf2621a614950b17f04626c431ab3c4c3"
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.3.0"
+ term_glyph:
+ dependency: transitive
+ description:
+ name: term_glyph
+ sha256: a29248a84fbb7c79282b40b8c72a1209db169a2e0542bce341da992fe1bc7e84
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.2.1"
+ test:
+ dependency: "direct dev"
+ description:
+ name: test
+ sha256: "713a8789d62f3233c46b4a90b174737b2c04cb6ae4500f2aa8b1be8f03f5e67f"
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.25.8"
+ test_api:
+ dependency: transitive
+ description:
+ name: test_api
+ sha256: "664d3a9a64782fcdeb83ce9c6b39e78fd2971d4e37827b9b06c3aa1edc5e760c"
+ url: "https://pub.dev"
+ source: hosted
+ version: "0.7.3"
+ test_core:
+ dependency: transitive
+ description:
+ name: test_core
+ sha256: "12391302411737c176b0b5d6491f466b0dd56d4763e347b6714efbaa74d7953d"
+ url: "https://pub.dev"
+ source: hosted
+ version: "0.6.5"
+ typed_data:
+ dependency: transitive
+ description:
+ name: typed_data
+ sha256: facc8d6582f16042dd49f2463ff1bd6e2c9ef9f3d5da3d9b087e244a7b564b3c
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.3.2"
+ vm_service:
+ dependency: transitive
+ description:
+ name: vm_service
+ sha256: "5c5f338a667b4c644744b661f309fb8080bb94b18a7e91ef1dbd343bed00ed6d"
+ url: "https://pub.dev"
+ source: hosted
+ version: "14.2.5"
+ watcher:
+ dependency: transitive
+ description:
+ name: watcher
+ sha256: "3d2ad6751b3c16cf07c7fca317a1413b3f26530319181b37e3b9039b84fc01d8"
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.1.0"
+ web:
+ dependency: transitive
+ description:
+ name: web
+ sha256: d43c1d6b787bf0afad444700ae7f4db8827f701bc61c255ac8d328c6f4d52062
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.0.0"
+ web_socket:
+ dependency: transitive
+ description:
+ name: web_socket
+ sha256: "3c12d96c0c9a4eec095246debcea7b86c0324f22df69893d538fcc6f1b8cce83"
+ url: "https://pub.dev"
+ source: hosted
+ version: "0.1.6"
+ web_socket_channel:
+ dependency: transitive
+ description:
+ name: web_socket_channel
+ sha256: "9f187088ed104edd8662ca07af4b124465893caf063ba29758f97af57e61da8f"
+ url: "https://pub.dev"
+ source: hosted
+ version: "3.0.1"
+ webkit_inspection_protocol:
+ dependency: transitive
+ description:
+ name: webkit_inspection_protocol
+ sha256: "87d3f2333bb240704cd3f1c6b5b7acd8a10e7f0bc28c28dcf14e782014f4a572"
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.2.1"
+ yaml:
+ dependency: transitive
+ description:
+ name: yaml
+ sha256: "75769501ea3489fca56601ff33454fe45507ea3bfb014161abc3b43ae25989d5"
+ url: "https://pub.dev"
+ source: hosted
+ version: "3.1.2"
+sdks:
+ dart: ">=3.5.2 <4.0.0"
diff --git a/lec2/pubspec.yaml b/lec2/pubspec.yaml
new file mode 100644
index 0000000..b2c8340
--- /dev/null
+++ b/lec2/pubspec.yaml
@@ -0,0 +1,15 @@
+name: dart
+description: A sample command-line application with basic argument parsing.
+version: 0.0.1
+# repository: https://github.com/my_org/my_repo
+
+environment:
+ sdk: ^3.5.2
+
+# Add regular dependencies here.
+dependencies:
+ args: ^2.4.2
+
+dev_dependencies:
+ lints: ^4.0.0
+ test: ^1.24.0