インタラクティブなUI要素
Button、TextField、Image、Iconなどの一般的なインタラクティブ要素を実装し、アプリケーションを魅力的にします。
「インタラクティブなUI要素」はCoddyKit上の無料Flutter Mobile Developmentレッスンです。 これはレッスン3/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これは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.
TextButtonis ideal for secondary actions, like 'Cancel' in a dialog.OutlinedButtonprovides a visual border, suitable for actions that need a bit more emphasis than aTextButtonbut less than anElevatedButton.
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,OutlinedButtonfor 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!
よくある質問
「インタラクティブなUI要素」レッスンは無料ですか?
はい。「インタラクティブなUI要素」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Flutter Mobile Developmentコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Flutter Mobile Developmentコースには全4レッスンが含まれています。
「インタラクティブなUI要素」で何を学びますか?
Button、TextField、Image、Iconなどの一般的なインタラクティブ要素を実装し、アプリケーションを魅力的にします。 ブラウザで直接実行するハンズオンコードでFlutter Mobile Developmentを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Flutter Mobile Developmentを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのFlutter Mobile Developmentは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン3/4です。
「インタラクティブなUI要素」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このFlutter Mobile Developmentレッスンでコードを書いて実行できますか?
はい。すべてのFlutter Mobile Developmentレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。