5 примеров использования обычных функций в сочетании с Flutter
и StatefulWidget
. Они помогут понять, как функции могут улучшить логику и читаемость кода в приложении Flutter.
Пример 1: Функция для увеличения значения счетчика
Функция incrementCounter
увеличивает значение счетчика каждый раз, когда нажата кнопка.
Copy import 'package:flutter/material.dart';
class CounterApp extends StatefulWidget {
@override
_CounterAppState createState() => _CounterAppState();
}
class _CounterAppState extends State<CounterApp> {
int counter = 0;
// Обычная функция для увеличения счетчика
void incrementCounter() {
setState(() {
counter++;
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text("Counter Example")),
body: Center(child: Text("Counter: $counter")),
floatingActionButton: FloatingActionButton(
onPressed: incrementCounter,
child: Icon(Icons.add),
),
);
}
}
Пример 2: Функция для обновления текста
Функция updateText
изменяет текст при нажатии кнопки.
Copy import 'package:flutter/material.dart';
class TextUpdateApp extends StatefulWidget {
@override
_TextUpdateAppState createState() => _TextUpdateAppState();
}
class _TextUpdateAppState extends State<TextUpdateApp> {
String displayedText = "Hello, World!";
// Обычная функция для обновления текста
void updateText() {
setState(() {
displayedText = "Text updated!";
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text("Text Update Example")),
body: Center(child: Text(displayedText)),
floatingActionButton: FloatingActionButton(
onPressed: updateText,
child: Icon(Icons.refresh),
),
);
}
}
Пример 3: Функция для переключения видимости элемента
Функция toggleVisibility
переключает видимость текста при нажатии кнопки.
Copy import 'package:flutter/material.dart';
class ToggleVisibilityApp extends StatefulWidget {
@override
_ToggleVisibilityAppState createState() => _ToggleVisibilityAppState();
}
class _ToggleVisibilityAppState extends State<ToggleVisibilityApp> {
bool isVisible = true;
// Обычная функция для переключения видимости
void toggleVisibility() {
setState(() {
isVisible = !isVisible;
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text("Toggle Visibility Example")),
body: Center(
child: isVisible ? Text("This text is visible") : Container(),
),
floatingActionButton: FloatingActionButton(
onPressed: toggleVisibility,
child: Icon(Icons.visibility),
),
);
}
}
Пример 4: Функция для добавления элементов в список
Функция addItem
добавляет новый элемент в список при каждом нажатии кнопки.
Copy import 'package:flutter/material.dart';
class ListAddItemApp extends StatefulWidget {
@override
_ListAddItemAppState createState() => _ListAddItemAppState();
}
class _ListAddItemAppState extends State<ListAddItemApp> {
List<String> items = [];
// Обычная функция для добавления элемента
void addItem() {
setState(() {
items.add("Item ${items.length + 1}");
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text("Add Item Example")),
body: ListView.builder(
itemCount: items.length,
itemBuilder: (context, index) => ListTile(title: Text(items[index])),
),
floatingActionButton: FloatingActionButton(
onPressed: addItem,
child: Icon(Icons.add),
),
);
}
}
Пример 5: Функция для вычисления результата и его отображения
Функция calculateSum
вычисляет сумму двух чисел, введенных пользователем.
Copy import 'package:flutter/material.dart';
class CalculateSumApp extends StatefulWidget {
@override
_CalculateSumAppState createState() => _CalculateSumAppState();
}
class _CalculateSumAppState extends State<CalculateSumApp> {
TextEditingController num1Controller = TextEditingController();
TextEditingController num2Controller = TextEditingController();
String result = "";
// Обычная функция для вычисления суммы
void calculateSum() {
int num1 = int.tryParse(num1Controller.text) ?? 0;
int num2 = int.tryParse(num2Controller.text) ?? 0;
setState(() {
result = "Sum: ${num1 + num2}";
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text("Calculate Sum Example")),
body: Padding(
padding: EdgeInsets.all(16),
child: Column(
children: [
TextField(
controller: num1Controller,
keyboardType: TextInputType.number,
decoration: InputDecoration(labelText: "Enter first number"),
),
TextField(
controller: num2Controller,
keyboardType: TextInputType.number,
decoration: InputDecoration(labelText: "Enter second number"),
),
SizedBox(height: 20),
ElevatedButton(
onPressed: calculateSum,
child: Text("Calculate"),
),
SizedBox(height: 20),
Text(result, style: TextStyle(fontSize: 24)),
],
),
),
);
}
}
Эти примеры показывают, как можно использовать функции для управления состоянием и отображением данных в StatefulWidget
с помощью функций, чтобы код был более структурированным и легко читаемым.
Last updated 6 months ago