Flutter — це популярний фреймворк від Google для створення кросплатформених додатків із єдиною кодовою базою. Він базується на мові програмування Dart, яка підтримує об'єктно-орієнтоване програмування (ООП). У цій статті ми розглянемо класи та об'єкти в контексті Flutter і Dart, надамо практичні приклади та пояснимо, як їх використовувати для створення додатків. Цей матеріал ідеально підійде для новачків і тих, хто хоче краще зрозуміти основи Flutter. Почнімо!
Що таке класи та об'єкти в Flutter (Dart)?
Клас — це шаблон, який визначає властивості (дані) та методи (функції), що описують поведінку об'єкта. Об'єкт — це конкретний екземпляр класу, створений на основі цього шаблону. У Flutter класи є основою для створення віджетів, моделей даних і логіки додатків.
Основні принципи:
- У Dart усе є об'єктом, навіть базові типи, такі як int чи String.
- Класи дозволяють структурувати код і повторно використовувати його.
Як створити клас у Flutter?
Клас у Dart створюється за допомогою ключового слова class. Ось простий приклад:
Ко Select
class Person {
String name; // Властивість
int age;
// Конструктор
Person(this.name, this.age);
// Метод
void introduce() {
print("Привіт, мене звати $name, мені $age років.");
}
}
У цьому прикладі:
- name і age — це властивості класу.
- Person(this.name, this.age) — це скорочений синтаксис конструктора в Dart.
- introduce() — це метод, який виводить інформацію про об'єкт.
Створення об'єкта в Flutter
Щоб створити об'єкт, використовуйте ключове слово new (хоча в Dart воно необов'язкове):
Ко Select
void main() {
// Створення об'єкта
var person = Person("Олена", 25);
// Доступ до властивостей
print(person.name); // Виведе: Олена
// Виклик методу
person.introduce(); // Виведе: Привіт, мене звати Олена, мені 25 років.
}
Використання класів у Flutter для віджетів
У Flutter класи часто використовуються для створення користувацьких віджетів. Ось приклад створення простого віджета:
Ко Select
import 'package:flutter/material.dart';
class GreetingWidget extends StatelessWidget {
final String name;
// Конструктор
GreetingWidget(this.name);
@override
Widget build(BuildContext context) {
return Text(
"Привіт, $name!",
style: TextStyle(fontSize: 24, color: Colors.blue),
);
}
}
void main() {
runApp(
MaterialApp(
home: Scaffold(
body: Center(
child: GreetingWidget("Іван"),
),
),
),
);
}
У цьому прикладі:
- GreetingWidget — це клас, який успадковує StatelessWidget.
- Метод build() повертає віджет Text із привітанням.
Ініціалізація об'єктів із конструкторами
Dart підтримує різні типи конструкторів, наприклад, іменовані конструктори:
Ко Select
class Car {
String brand;
int year;
// Основний конструктор
Car(this.brand, this.year);
// Іменований конструктор
Car.unknownYear(this.brand) {
year = 0;
}
void displayInfo() {
print("Автомобіль: $brand, Рік: $year");
}
}
void main() {
var car1 = Car("Toyota", 2020);
var car2 = Car.unknownYear("BMW");
car1.displayInfo(); // Виведе: Автомобіль: Toyota, Рік: 2020
car2.displayInfo(); // Виведе: Автомобіль: BMW, Рік: 0
}
Практичний приклад: Модель даних у Flutter
Розглянемо приклад створення класу для моделі даних, наприклад, продукту в магазині:
Ко Select
class Product {
String name;
double price;
bool inStock;
Product({required this.name, required this.price, this.inStock = true});
void showDetails() {
print("Продукт: $name, Ціна: $price грн, В наявності: $inStock");
}
}
void main() {
var product = Product(name: "Телефон", price: 12000.0);
product.showDetails(); // Виведе: Продукт: Телефон, Ціна: 12000.0 грн, В наявності: true
}
Цей клас можна використовувати для зберігання та обробки даних у Flutter-додатку.
Поради для роботи з класами в Flutter
- Використовуйте required для обов'язкових параметрів: Це підвищує безпеку коду.
- Розділяйте логіку та UI: Створюйте окремі класи для моделей даних і віджетів.
- Експериментуйте з конструкторами: Іменовані конструктори спрощують створення об'єктів.
- Оптимізуйте віджети: Уникайте складних обчислень у методі build().
Висновок
Класи та об'єкти в Flutter (і Dart) — це основа для створення структурованого та ефективного коду. Вони дозволяють розробникам створювати як моделі даних, так і користувацькі віджети для інтерфейсу. Завдяки прикладам у цій статті ви можете почати застосовувати ці концепції у своїх проєктах. Практикуйтеся та створюйте власні класи вже сьогодні!