пять примеров использования оператора switch
в Flutter с использованием StatefulWidget
, от простого к более сложному.
1. Простой пример: Выбор цвета
В этом примере мы используем оператор switch
для изменения текста в зависимости от выбранного цвета.
Copy import 'package:flutter/material.dart';
class ColorSwitchExample extends StatefulWidget {
@override
_ColorSwitchExampleState createState() => _ColorSwitchExampleState();
}
class _ColorSwitchExampleState extends State<ColorSwitchExample> {
String _selectedColor = "red";
String _getColorMessage() {
switch (_selectedColor) {
case "red":
return "Вы выбрали красный цвет!";
case "blue":
return "Вы выбрали синий цвет!";
case "green":
return "Вы выбрали зеленый цвет!";
default:
return "Выберите цвет!";
}
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text("Пример switch")),
body: Center(
child: Text(
_getColorMessage(),
style: TextStyle(fontSize: 24),
),
),
);
}
}
2. Пример: Определение дня недели
В этом примере мы определяем, является ли день недели выходным или рабочим.
Copy import 'package:flutter/material.dart';
class DayOfWeekExample extends StatefulWidget {
@override
_DayOfWeekExampleState createState() => _DayOfWeekExampleState();
}
class _DayOfWeekExampleState extends State<DayOfWeekExample> {
String _day = "Saturday"; // Можно менять на любой день
String _checkDayType() {
switch (_day) {
case "Saturday":
case "Sunday":
return "Это выходной!";
default:
return "Это рабочий день.";
}
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text("Определение дня недели")),
body: Center(
child: Text(
_checkDayType(),
style: TextStyle(fontSize: 24),
),
),
);
}
}
3. Пример: Выбор типа пользователя
В этом примере мы отображаем разные сообщения в зависимости от уровня доступа пользователя.
Copy import 'package:flutter/material.dart';
class UserTypeExample extends StatefulWidget {
@override
_UserTypeExampleState createState() => _UserTypeExampleState();
}
class _UserTypeExampleState extends State<UserTypeExample> {
String _userType = "admin"; // Можно менять на "user" или "guest"
String _getUserMessage() {
switch (_userType) {
case "admin":
return "Вы администратор.";
case "user":
return "Вы пользователь.";
case "guest":
return "Вы гость.";
default:
return "Неизвестный тип пользователя.";
}
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text("Тип пользователя")),
body: Center(
child: Text(
_getUserMessage(),
style: TextStyle(fontSize: 24),
),
),
);
}
}
4. Пример: Определение оценки студента
В этом примере мы определяем, какая оценка у студента на основе его баллов.
Copy import 'package:flutter/material.dart';
class GradeExample extends StatefulWidget {
@override
_GradeExampleState createState() => _GradeExampleState();
}
class _GradeExampleState extends State<GradeExample> {
int _score = 85; // Можно менять на другие значения
String _getGrade() {
switch (_score ~/ 10) {
case 10:
case 9:
return "Отлично";
case 8:
return "Хорошо";
case 7:
return "Удовлетворительно";
case 6:
return "Неудовлетворительно";
default:
return "Провал";
}
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text("Оценка студента")),
body: Center(
child: Text(
_getGrade(),
style: TextStyle(fontSize: 24),
),
),
);
}
}
5. Пример: Меню выбора языка
В этом примере мы используем switch
для отображения текста на выбранном языке.
Copy import 'package:flutter/material.dart';
class LanguageSwitchExample extends StatefulWidget {
@override
_LanguageSwitchExampleState createState() => _LanguageSwitchExampleState();
}
class _LanguageSwitchExampleState extends State<LanguageSwitchExample> {
String _language = "English"; // Можно менять на "Spanish", "French"
String _getGreeting() {
switch (_language) {
case "Spanish":
return "¡Hola!";
case "French":
return "Bonjour!";
case "English":
default:
return "Hello!";
}
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text("Выбор языка")),
body: Center(
child: Text(
_getGreeting(),
style: TextStyle(fontSize: 24),
),
),
);
}
}
Заключение
Эти примеры показывают, как использовать оператор switch
в Flutter с StatefulWidget
, чтобы управлять логикой интерфейса в зависимости от различных состояний. Вы можете адаптировать эти примеры для своих приложений, чтобы улучшить интерактивность и пользовательский опыт.
Last updated 6 months ago