0Pricing
Flutter Mobile Development · Урок

Интерактивные элементы интерфейса

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

«Интерактивные элементы интерфейса» — бесплатный урок Flutter Mobile Development на CoddyKit. Это урок 3 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Flutter Mobile Development, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Flutter Mobile Development содержит 4 уроков всего.

Части этого урока еще не переведены и отображаются на английском.

Engaging User Interaction

Welcome to creating interactive UIs! In Flutter, interactive elements are key to making your apps useful and fun to use.

These elements let users tap, type, and see dynamic content. We'll explore common ones like buttons, text fields, images, and icons.

Buttons: Your First Interaction

Buttons are fundamental for user actions. Flutter provides several button types, each suited for different emphasis levels:

  • ElevatedButton: A material design button with a shadow, indicating high emphasis.
  • TextButton: A text label button with no elevation, for less prominent actions.
  • OutlinedButton: A button with a border, for medium-emphasis actions.

All buttons typically have an onPressed callback, which defines what happens when the button is tapped.

ElevatedButton in Action

The ElevatedButton is great for primary actions. Let's see how to create one that prints a message when tapped.

The onPressed property takes a function that executes when the button is pressed.

import 'package:flutter/material.dart';

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

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

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(title: const Text('Elevated Button')),
        body: Center(
          child: ElevatedButton(
            onPressed: () {
              print('Button Tapped!');
            },
            child: const Text('Tap Me!')
          ),
        ),
      ),
    );
  }
}

TextButton & OutlinedButton

Beyond ElevatedButton, you'll often use TextButton and OutlinedButton.

  • TextButton is ideal for secondary actions, like 'Cancel' in a dialog.
  • OutlinedButton provides a visual border, suitable for actions that need a bit more emphasis than a TextButton but less than an ElevatedButton.

They both share the onPressed property for handling taps.

TextFields for User Input

To get text input from users, Flutter provides the TextField widget. It's highly customizable for various input needs, from simple names to complex multi-line text.

You'll often use a TextEditingController with TextField to programmatically control and retrieve the text input by the user.

Building an Input Field

Here's a basic TextField that uses a TextEditingController. We'll also add a button to display what the user typed.

Notice how the controller is passed to the TextField and used to get its current text.

import 'package:flutter/material.dart';

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

class MyApp extends StatefulWidget {
  const MyApp({super.key});

  @override
  State<MyApp> createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  final TextEditingController _controller = TextEditingController();

  @override
  void dispose() {
    _controller.dispose(); // Important to dispose controllers!
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(title: const Text('Text Field')),
        body: Padding(
          padding: const EdgeInsets.all(16.0),
          child: Column(
            children: [
              TextField(
                controller: _controller,
                decoration: const InputDecoration(
                  labelText: 'Enter your name',
                  border: OutlineInputBorder(),
                ),
              ),
              const SizedBox(height: 10),
              ElevatedButton(
                onPressed: () {
                  print('User typed: ${_controller.text}');
                },
                child: const Text('Show Input'),
              ),
            ],
          ),
        ),
      ),
    );
  }
}

Showing Visuals with Images

Images bring visual appeal to your app. Flutter's Image widget can load images from various sources:

  • Assets: Image.asset('assets/my_image.png') for local images bundled with your app.
  • Network: Image.network('https://example.com/image.jpg') for images from the internet.
  • Files: Image.file(File('path/to/image.jpg')) from the device's file system.
  • Memory: Image.memory(bytes) from raw byte data.

Loading an Image from Web

Let's display an image directly from a URL using Image.network. This is common for dynamic content.

Make sure you have an internet connection to load network images.

import 'package:flutter/material.dart';

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

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

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(title: const Text('Network Image')),
        body: Center(
          child: Image.network(
            'https://flutter.dev/assets/images/shared/brand/flutter/logo/flutter-lockup-horizontal.png',
            width: 250,
          ),
        ),
      ),
    );
  }
}

Icons for Clarity & Guidance

Icons are small, symbolic images that convey meaning quickly. Flutter has a rich set of built-in Material Design icons, accessible through the Icons class.

You use the Icon widget to display them. Icons are excellent for navigation, indicating actions, or simply adding visual flair.

Adding a Simple Icon

Displaying an icon is straightforward. Just pass an icon from the Icons class to the Icon widget. You can also customize its color and size.

import 'package:flutter/material.dart';

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

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

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(title: const Text('Flutter Icon')),
        body: const Center(
          child: Icon(
            Icons.star, // A star icon
            color: Colors.amber,
            size: 100.0,
          ),
        ),
      ),
    );
  }
}

Interactive Elements Challenge

Which of the following are valid ways to display an image in Flutter using the Image widget constructors?

Wrapping Up Interactive UI

Great job! You've learned how to implement essential interactive UI elements in Flutter. We covered:

  • Buttons: ElevatedButton, TextButton, OutlinedButton for user actions.
  • TextFields: For collecting user text input.
  • Images: Displaying visuals from assets or the network.
  • Icons: Adding symbolic visual cues to your app.

Mastering these elements is crucial for building engaging and user-friendly Flutter applications. Keep practicing!

Часто задаваемые вопросы

Урок «Интерактивные элементы интерфейса» бесплатный?

Да — полный текст урока «Интерактивные элементы интерфейса» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Flutter Mobile Development, подпишись на CoddyKit PRO. Курс Flutter Mobile Development содержит 4 уроков всего.

Чему я научусь в уроке «Интерактивные элементы интерфейса»?

Реализуйте распространенные интерактивные элементы, такие как кнопки, TextFields, изображения и значки, чтобы сделать приложения удобными и интересными. Ты практикуешь Flutter Mobile Development с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Flutter Mobile Development?

Предыдущий опыт не требуется. Flutter Mobile Development на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 3 из 4.

Сколько времени занимает урок «Интерактивные элементы интерфейса»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Flutter Mobile Development?

Да. Каждый урок Flutter Mobile Development включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Виджеты Stateless и Stateful
  2. Базовые виджеты компоновки
  3. Интерактивные элементы интерфейса
  4. Создание прокручиваемых списков с ListView
← Назад к Flutter Mobile Development