пять примеров использования функций-стрелок (arrow functions) в Flutter с StatefulWidget
. Функции-стрелки удобны для создания коротких функций, особенно в ситуациях, где просто нужно возвращать результат выражения или в анонимных функциях (например, для обработчиков событий).
Пример 1: Упрощенный обработчик события нажатия
Функция-стрелка используется здесь для обработки нажатия кнопки.
Copy import 'package:flutter/material.dart';
class CounterApp extends StatefulWidget {
@override
_CounterAppState createState() => _CounterAppState();
}
class _CounterAppState extends State<CounterApp> {
int counter = 0;
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text("Counter Example")),
body: Center(child: Text("Count: $counter", style: TextStyle(fontSize: 24))),
floatingActionButton: FloatingActionButton(
onPressed: () => setState(() => counter++),
child: Icon(Icons.add),
),
);
}
}
Объяснение : Здесь используется функция-стрелка для простого увеличения counter
на 1. Такой синтаксис экономит место и упрощает код.
Пример 2: Возвращение строки с приветствием
В этом примере функция-стрелка возвращает строку приветствия.
Copy import 'package:flutter/material.dart';
class GreetingApp extends StatefulWidget {
@override
_GreetingAppState createState() => _GreetingAppState();
}
class _GreetingAppState extends State<GreetingApp> {
String getGreeting() => "Hello, Flutter!";
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text("Greeting Example")),
body: Center(child: Text(getGreeting(), style: TextStyle(fontSize: 24))),
);
}
}
Объяснение : Функция-стрелка getGreeting
возвращает строку без необходимости использовать блоки {}
или оператор return
. Такой синтаксис удобен, когда функция состоит из одного выражения.
Пример 3: Условный вывод текста
Функция-стрелка используется здесь для определения текста в зависимости от значения переменной isEnabled
.
Copy import 'package:flutter/material.dart';
class StatusApp extends StatefulWidget {
@override
_StatusAppState createState() => _StatusAppState();
}
class _StatusAppState extends State<StatusApp> {
bool isEnabled = true;
String getStatus() => isEnabled ? "Enabled" : "Disabled";
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text("Status Example")),
body: Center(child: Text("Status: ${getStatus()}", style: TextStyle(fontSize: 24))),
floatingActionButton: FloatingActionButton(
onPressed: () => setState(() => isEnabled = !isEnabled),
child: Icon(Icons.toggle_on),
),
);
}
}
Объяснение : getStatus
использует функцию-стрелку для возврата строки в зависимости от состояния isEnabled
. Это позволяет сделать код компактнее.
Пример 4: Краткая функция вычисления площади
Функция-стрелка принимает два параметра для вычисления площади и возвращает результат.
Copy import 'package:flutter/material.dart';
class AreaApp extends StatefulWidget {
@override
_AreaAppState createState() => _AreaAppState();
}
class _AreaAppState extends State<AreaApp> {
double calculateArea(double width, double height) => width * height;
@override
Widget build(BuildContext context) {
double width = 5;
double height = 10;
return Scaffold(
appBar: AppBar(title: Text("Area Example")),
body: Center(child: Text("Area: ${calculateArea(width, height)}", style: TextStyle(fontSize: 24))),
);
}
}
Объяснение : Функция calculateArea
принимает width
и height
и возвращает их произведение. Функция-стрелка делает код более компактным и легко читаемым.
Пример 5: Фильтрация списка значений
Здесь используется функция-стрелка для фильтрации списка чисел и создания нового списка только из чётных чисел.
Copy import 'package:flutter/material.dart';
class FilterApp extends StatefulWidget {
@override
_FilterAppState createState() => _FilterAppState();
}
class _FilterAppState extends State<FilterApp> {
List<int> numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
List<int> getEvenNumbers() => numbers.where((number) => number % 2 == 0).toList();
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text("Filter Example")),
body: Center(child: Text("Even Numbers: ${getEvenNumbers()}", style: TextStyle(fontSize: 24))),
);
}
}
Объяснение : getEvenNumbers
использует функцию-стрелку для фильтрации списка чисел, возвращая только чётные.
Last updated 6 months ago