🧑‍💻switch/case

пять примеров использования оператора switch в Flutter с использованием StatefulWidget, от простого к более сложному.

1. Простой пример: Выбор цвета

В этом примере мы используем оператор switch для изменения текста в зависимости от выбранного цвета.

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. Пример: Определение дня недели

В этом примере мы определяем, является ли день недели выходным или рабочим.

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. Пример: Выбор типа пользователя

В этом примере мы отображаем разные сообщения в зависимости от уровня доступа пользователя.

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. Пример: Определение оценки студента

В этом примере мы определяем, какая оценка у студента на основе его баллов.

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 для отображения текста на выбранном языке.

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