# TextButton()

#### Что такое `TextButton`

`TextButton` в Flutter — это виджет, который представляет собой кнопку с текстом. Он используется для выполнения действий при нажатии на кнопку. Отличительной чертой `TextButton` является то, что он не имеет видимого фона, что позволяет ему выглядеть более «плоским» по сравнению с другими типами кнопок, такими как `ElevatedButton` или `OutlinedButton`.

#### Пример использования

Вот пример использования `TextButton` в приложении Flutter:

<div align="left"><figure><img src="https://i.postimg.cc/PqLCY7X6/text-button-ezgif-com-video-to-gif-converter.gif" alt="" width="188"><figcaption></figcaption></figure></div>

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

class TextButtonExample extends StatelessWidget {
  const TextButtonExample({super.key});

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: const Text('TextButton Example')),
      body: Center(
        child: TextButton(
          onPressed: () {
            // Действие при нажатии на кнопку
            ScaffoldMessenger.of(context).showSnackBar(
              const SnackBar(content: Text('TextButton Pressed!')),
            );
          },
          onLongPress: () {
            // Действие при длительном нажатии
            ScaffoldMessenger.of(context).showSnackBar(
              const SnackBar(content: Text('Long Pressed!')),
            );
          },
          child: const Text('Click Me'),
        ),
      ),
    );
  }
}
```

#### Как работает код

1. **TextButton**: Основной виджет кнопки с текстом.
2. **onPressed**: Функция, которая будет вызвана, когда кнопка будет нажата. В примере мы показываем уведомление.
3. **onLongPress**: Функция, которая будет вызвана при длительном нажатии на кнопку.

#### Зачем это нужно

`TextButton` используется, когда вам нужно создать кнопку, которая выглядит как текст и не отвлекает внимание от содержимого. Это идеальный вариант для:

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

#### Все настройки `TextButton`

1. **required void Function()? onPressed**
   * **Описание**: Функция, которая будет вызвана при нажатии на кнопку. Обязательный параметр.
   * **Пример**:

     ```dart
     onPressed: () {
       print('Button Pressed'); // Действие при нажатии
     }
     ```
2. **void Function()? onLongPress**
   * **Описание**: Функция, которая будет вызвана при длительном нажатии на кнопку.
   * **Пример**:

     ```dart
     onLongPress: () {
       print('Button Long Pressed'); // Действие при длительном нажатии
     }
     ```
3. **void Function(bool)? onHover**
   * **Описание**: Функция, которая будет вызвана, когда указатель мыши будет наведён на кнопку или убран с неё. Принимает `true` или `false` в зависимости от состояния.
   * **Пример**:

     ```dart
     onHover: (isHovered) {
       if (isHovered) {
         print('Hovered'); // Действие при наведении
       }
     }
     ```
4. **void Function(bool)? onFocusChange**
   * **Описание**: Функция, которая будет вызвана при изменении состояния фокуса кнопки.
   * **Пример**:

     ```dart
     onFocusChange: (hasFocus) {
       if (hasFocus) {
         print('Button Focused'); // Действие при получении фокуса
       }
     }
     ```
5. **ButtonStyle? style**
   * **Описание**: Стиль кнопки, который позволяет настраивать её внешний вид, например, цвет, размеры, фон и т.д.
   * **Пример**:

     ```dart
     style: TextButton.styleFrom(
        
       backgroundColor: Colors.grey[200], // Цвет фона
     )
     ```
6. **FocusNode? focusNode**
   * **Описание**: Указывает на узел фокуса, который используется для управления фокусом этой кнопки.
   * **Пример**:

     ```dart
     focusNode: FocusNode() // Указатель на узел фокуса
     ```
7. **bool autofocus = false**
   * **Описание**: Если true, кнопка автоматически получит фокус, когда виджет будет построен.
   * **Пример**:

     ```dart
     autofocus: true // Автофокус при загрузке
     ```
8. **Clip? clipBehavior**
   * **Описание**: Определяет, как будут обрабатываться элементы, выходящие за пределы кнопки. Может быть `Clip.hardEdge`, `Clip.antiAlias`, `Clip.none`.
   * **Пример**:

     ```dart
     clipBehavior: Clip.antiAlias // Обработка выхода элементов
     ```
9. **WidgetStatesController? statesController**
   * **Описание**: Позволяет контролировать состояние виджета в зависимости от различных событий.
   * **Пример**:

     ```dart
     statesController: WidgetStatesController() // Контроллер состояний
     ```
10. **bool? isSemanticButton = true**
    * **Описание**: Указывает, является ли эта кнопка семантической. Используется для доступности.
    * **Пример**:

      ```dart
      isSemanticButton: true // Семантическая кнопка
      ```
11. **required Widget child**
    * **Описание**: Дочерний виджет, который будет отображаться внутри кнопки. Обязательный параметр.
    * **Пример**:

      ```dart
      child: Text('Button Text') // Текст кнопки
      ```
12. **IconAlignment iconAlignment = IconAlignment.start**
    * **Описание**: Определяет, где будет располагаться иконка (если она есть) относительно текста. Может быть `IconAlignment.start`, `IconAlignment.end`.
    * **Пример**:

      ```dart
      iconAlignment: IconAlignment.end // Иконка справа от текста
      ```

#### Заключение

`TextButton` — это простой и мощный инструмент для создания интерактивных интерфейсов в Flutter. Он идеально подходит для создания кнопок, которые не отвлекают внимание от содержимого, а также обеспечивают легкий и минималистичный вид. Настройки `TextButton` позволяют тонко настраивать поведение и внешний вид кнопки в зависимости от ваших потребностей.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://infinitys-organization-4.gitbook.io/flutter/flutter-widgets/knopki/textbutton.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
