🧑💻Параметры по умолчанию
пять примеров использования функций с параметрами по умолчанию в Flutter и StatefulWidget
. Они покажут, как можно задавать значения по умолчанию с помощью позиционных и именованных параметров в Dart.
Пример 1: Функция приветствия с параметром по умолчанию
В этом примере используется позиционный параметр с String name = 'Baias'
. Если пользователь не вводит имя, будет использовано значение по умолчанию 'Baias'
.
import 'package:flutter/material.dart';
class GreetingApp extends StatefulWidget {
@override
_GreetingAppState createState() => _GreetingAppState();
}
class _GreetingAppState extends State<GreetingApp> {
String greeting = "";
// Функция приветствия с параметром по умолчанию
void greet([String name = 'Baias']) {
setState(() {
greeting = "Hello, $name!";
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text("Greeting Example")),
body: Center(child: Text(greeting, style: TextStyle(fontSize: 24))),
floatingActionButton: FloatingActionButton(
onPressed: () => greet(),
child: Icon(Icons.gesture),
),
);
}
}
Объяснение: Здесь greet
имеет позиционный параметр name
со значением по умолчанию 'Baias'
. Если greet()
вызывается без аргумента, используется это значение по умолчанию.
Пример 2: Функция вычисления суммы с именованным параметром по умолчанию
Функция addNumber
принимает обязательный параметр num1
и именованный параметр num2
, который по умолчанию равен 5
.
import 'package:flutter/material.dart';
class AddApp extends StatefulWidget {
@override
_AddAppState createState() => _AddAppState();
}
class _AddAppState extends State<AddApp> {
int result = 0;
// Функция сложения с именованным параметром по умолчанию
void addNumber(int num1, {int num2 = 5}) {
setState(() {
result = num1 + num2;
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text("Addition Example")),
body: Center(child: Text("Result: $result", style: TextStyle(fontSize: 24))),
floatingActionButton: FloatingActionButton(
onPressed: () => addNumber(10),
child: Icon(Icons.add),
),
);
}
}
Объяснение: addNumber
принимает позиционный параметр num1
и именованный параметр num2
, который по умолчанию равен 5
. Вызов addNumber(10)
вычислит сумму 10 + 5
.
Пример 3: Функция приветствия с необязательным именем
Здесь мы комбинируем позиционный и именованный параметры: имя по умолчанию — 'Guest'
, а age
— необязательный именованный параметр.
import 'package:flutter/material.dart';
class WelcomeApp extends StatefulWidget {
@override
_WelcomeAppState createState() => _WelcomeAppState();
}
class _WelcomeAppState extends State<WelcomeApp> {
String greeting = "";
// Функция приветствия с позиционным и именованным параметрами
void welcome([String name = 'Guest', int age = 18]) {
setState(() {
greeting = "Welcome, $name! Age: $age";
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text("Welcome Example")),
body: Center(child: Text(greeting, style: TextStyle(fontSize: 24))),
floatingActionButton: FloatingActionButton(
onPressed: () => welcome(),
child: Icon(Icons.person),
),
);
}
}
Объяснение: Здесь welcome
имеет позиционный параметр name
с значением по умолчанию 'Guest'
и age
, которое по умолчанию равно 18
.
Пример 4: Функция с именованным параметром по умолчанию для форматирования сообщения
Функция displayMessage
принимает обязательное message
и имеет bold
с значением по умолчанию false
.
import 'package:flutter/material.dart';
class MessageApp extends StatefulWidget {
@override
_MessageAppState createState() => _MessageAppState();
}
class _MessageAppState extends State<MessageApp> {
String formattedMessage = "";
// Функция для отображения сообщения с именованным параметром
void displayMessage(String message, {bool bold = false}) {
setState(() {
formattedMessage = bold ? "BOLD: $message" : message;
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text("Message Example")),
body: Center(child: Text(formattedMessage, style: TextStyle(fontSize: 24))),
floatingActionButton: FloatingActionButton(
onPressed: () => displayMessage("Hello, Flutter!"),
child: Icon(Icons.message),
),
);
}
}
Объяснение: В этой функции bold
— именованный параметр с значением по умолчанию false
. Если bold
— true
, добавляется BOLD
перед текстом.
Пример 5: Функция с несколькими именованными параметрами по умолчанию
Здесь createProfile
принимает имя и необязательные параметры age
и country
с значениями по умолчанию.
import 'package:flutter/material.dart';
class ProfileApp extends StatefulWidget {
@override
_ProfileAppState createState() => _ProfileAppState();
}
class _ProfileAppState extends State<ProfileApp> {
String profileInfo = "";
// Функция для создания профиля с несколькими именованными параметрами
void createProfile(String name, {int age = 25, String country = 'Unknown'}) {
setState(() {
profileInfo = "Name: $name, Age: $age, Country: $country";
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text("Profile Example")),
body: Center(child: Text(profileInfo, style: TextStyle(fontSize: 24))),
floatingActionButton: FloatingActionButton(
onPressed: () => createProfile("Alice"),
child: Icon(Icons.person_add),
),
);
}
}
Объяснение: Функция createProfile
принимает обязательное name
и два необязательных параметра age
(по умолчанию 25
) и country
(по умолчанию 'Unknown'
).
Last updated