# bool

`bool` — это базовый тип данных в Dart, представляющий логическое значение, которое может быть либо `true`, либо `false`. Тип данных `bool` имеет ограниченное количество методов и свойств, так как он служит для выполнения простых логических операций. Вот основные особенности и применение `bool` в Dart:

#### Свойства и методы типа данных `bool`

1.  **toString()**

    * Преобразует значение `bool` в строку `"true"` или `"false"`.

    ```dart
    bool isTrue = true;
    print(isTrue.toString()); // Вывод: "true"
    ```

    **Где использовать**: Когда нужно отобразить или сохранить логическое значение в текстовом формате, например, для логирования или отображения в пользовательском интерфейсе.
2.  **Операции сравнения и логические операторы**

    * К `bool` можно применять логические операторы (`&&`, `||`, `!`) для создания сложных условий.

    ```dart
    bool isSunny = true;
    bool isWarm = false;

    // Логическое И (AND)
    print(isSunny && isWarm); // Вывод: false

    // Логическое ИЛИ (OR)
    print(isSunny || isWarm); // Вывод: true

    // Логическое НЕ (NOT)
    print(!isSunny); // Вывод: false
    ```

    **Где использовать**: В условиях и циклах, например, для проверки различных сценариев или выполнения разных действий в зависимости от значений `bool`.
3.  **Оператор сравнения**

    * Можно использовать операторы `==` и `!=` для сравнения значений `bool`.

    ```dart
    bool a = true;
    bool b = false;

    print(a == b); // Вывод: false
    print(a != b); // Вывод: true
    ```

    **Где использовать**: При необходимости сравнить два значения типа `bool`, чтобы определить, одинаковы они или различны.

#### Пример применения `bool` в Flutter

Пример Flutter-приложения, которое демонстрирует использование методов и логических операций с `bool`.

```dart
import 'package:flutter/material.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Bool Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: BoolDemoScreen(),
    );
  }
}

class BoolDemoScreen extends StatefulWidget {
  @override
  _BoolDemoScreenState createState() => _BoolDemoScreenState();
}

class _BoolDemoScreenState extends State<BoolDemoScreen> {
  bool isSwitched = false;
  bool isSunny = true;
  bool isWarm = false;
  String result = '';

  void _evaluateConditions() {
    setState(() {
      result = 'isSunny && isWarm: ${isSunny && isWarm}\n'
          'isSunny || isWarm: ${isSunny || isWarm}\n'
          '!isSunny: ${!isSunny}\n'
          'isSunny == isWarm: ${isSunny == isWarm}\n'
          'isSwitched: ${isSwitched.toString()}';
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Bool Methods Demo'),
      ),
      body: Padding(
        padding: const EdgeInsets.all(16.0),
        child: Column(
          crossAxisAlignment: CrossAxisAlignment.stretch,
          children: [
            SwitchListTile(
              title: Text('Switch Boolean Value'),
              value: isSwitched,
              onChanged: (value) {
                setState(() {
                  isSwitched = value;
                });
              },
            ),
            ElevatedButton(
              onPressed: _evaluateConditions,
              child: Text('Evaluate Conditions'),
            ),
            SizedBox(height: 16),
            Text(
              'Results:',
              style: TextStyle(fontSize: 18, fontWeight: FontWeight.bold),
            ),
            SizedBox(height: 8),
            Text(
              result,
              style: TextStyle(fontSize: 16),
            ),
          ],
        ),
      ),
    );
  }
}
```

В этом примере:

* Свойство `isSwitched` используется для отслеживания состояния переключателя (Switch).
* Кнопка **Evaluate Conditions** проверяет несколько логических условий и выводит результат, включая работу с методами и операторами `bool`.
