flutter_freedome 3.0.0 copy "flutter_freedome: ^3.0.0" to clipboard
flutter_freedome: ^3.0.0 copied to clipboard

Унифицированная Flutter библиотека для интеграции с купольными кинотеатрами FreeDome

example/lib/main.dart

import 'package:flutter/material.dart';
import 'package:flutter_freedome/flutter_freedome.dart';

void main() {
  runApp(const QuantumSilenceApp());
}

class QuantumSilenceApp extends StatelessWidget {
  const QuantumSilenceApp({super.key});

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Квантовая Тишина',
      theme: ThemeData(
        primarySwatch: Colors.deepPurple,
        useMaterial3: true,
      ),
      home: const QuantumSilenceExampleScreen(),
    );
  }
}

class QuantumSilenceExampleScreen extends StatefulWidget {
  const QuantumSilenceExampleScreen({super.key});

  @override
  State<QuantumSilenceExampleScreen> createState() =>
      _QuantumSilenceExampleScreenState();
}

class _QuantumSilenceExampleScreenState
    extends State<QuantumSilenceExampleScreen> {
  late QuantumSilenceService _silenceService;
  bool _isInitialized = false;
  String _status = 'Инициализация...';

  @override
  void initState() {
    super.initState();
    _initializeService();
  }

  Future<void> _initializeService() async {
    try {
      _silenceService = QuantumSilenceService();
      await _silenceService.initialize();

      setState(() {
        _isInitialized = true;
        _status = 'Система готова к работе';
      });
    } catch (e) {
      setState(() {
        _status = 'Ошибка инициализации: $e';
      });
    }
  }

  @override
  void dispose() {
    _silenceService.dispose();
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text('Квантовая Тишина'),
        backgroundColor: Colors.deepPurple,
        foregroundColor: Colors.white,
      ),
      body: _isInitialized ? _buildMainContent() : _buildLoadingScreen(),
    );
  }

  Widget _buildLoadingScreen() {
    return const Center(
      child: Column(
        mainAxisAlignment: MainAxisAlignment.center,
        children: [
          CircularProgressIndicator(),
          SizedBox(height: 16),
          Text('Инициализация квантовой системы...'),
        ],
      ),
    );
  }

  Widget _buildMainContent() {
    return SingleChildScrollView(
      padding: const EdgeInsets.all(16),
      child: Column(
        crossAxisAlignment: CrossAxisAlignment.start,
        children: [
          // Заголовок и статус
          Card(
            child: Padding(
              padding: const EdgeInsets.all(16),
              child: Column(
                crossAxisAlignment: CrossAxisAlignment.start,
                children: [
                  Row(
                    children: [
                      const Icon(Icons.hearing, color: Colors.deepPurple),
                      const SizedBox(width: 8),
                      const Text(
                        'Квантовая Система Поглощения Звука',
                        style: TextStyle(
                          fontSize: 20,
                          fontWeight: FontWeight.bold,
                        ),
                      ),
                    ],
                  ),
                  const SizedBox(height: 8),
                  Text(
                    'Статус: $_status',
                    style: const TextStyle(color: Colors.grey),
                  ),
                ],
              ),
            ),
          ),

          const SizedBox(height: 16),

          // Управление тишиной
          QuantumSilenceControl(
            service: _silenceService,
            showAdvanced: true,
          ),

          const SizedBox(height: 16),

          // Информация о системе
          _buildSystemInfo(),

          const SizedBox(height: 16),

          // Примеры использования
          _buildUsageExamples(),
        ],
      ),
    );
  }

  Widget _buildSystemInfo() {
    return Card(
      child: Padding(
        padding: const EdgeInsets.all(16),
        child: Column(
          crossAxisAlignment: CrossAxisAlignment.start,
          children: [
            const Text(
              'Информация о системе',
              style: TextStyle(
                fontSize: 18,
                fontWeight: FontWeight.bold,
              ),
            ),
            const SizedBox(height: 8),
            AnimatedBuilder(
              animation: _silenceService,
              builder: (context, child) {
                final state = _silenceService.state;
                return Column(
                  children: [
                    _buildInfoRow('Режим', _getModeName(state.mode)),
                    _buildInfoRow(
                        'Активность', state.isActive ? 'Активна' : 'Неактивна'),
                    _buildInfoRow('Уровень тишины',
                        '${(state.silenceLevel * 100).toInt()}%'),
                    _buildInfoRow('Поглощение звука',
                        '${state.soundAbsorption.toInt()}%'),
                    _buildInfoRow(
                        'Фоновый шум', '${state.ambientNoise.toInt()} дБ'),
                    _buildInfoRow(
                        'Когерентность', '${state.quantumCoherence.toInt()}%'),
                    _buildInfoRow(
                        'Стабильность', '${state.resonanceStability.toInt()}%'),
                  ],
                );
              },
            ),
          ],
        ),
      ),
    );
  }

  Widget _buildInfoRow(String label, String value) {
    return Padding(
      padding: const EdgeInsets.symmetric(vertical: 4),
      child: Row(
        children: [
          SizedBox(
            width: 120,
            child: Text(
              label,
              style: const TextStyle(fontWeight: FontWeight.w500),
            ),
          ),
          Text(value),
        ],
      ),
    );
  }

  Widget _buildUsageExamples() {
    return Card(
      child: Padding(
        padding: const EdgeInsets.all(16),
        child: Column(
          crossAxisAlignment: CrossAxisAlignment.start,
          children: [
            const Text(
              'Примеры использования',
              style: TextStyle(
                fontSize: 18,
                fontWeight: FontWeight.bold,
              ),
            ),
            const SizedBox(height: 8),
            const Text(
              '1. Гробовая тишина - для подготовки к проекциям в куполе FreeDome',
              style: TextStyle(fontSize: 14),
            ),
            const SizedBox(height: 4),
            const Text(
              '2. Медитативная тишина - для релаксации и медитации',
              style: TextStyle(fontSize: 14),
            ),
            const SizedBox(height: 4),
            const Text(
              '3. Фокусная тишина - для концентрации и работы',
              style: TextStyle(fontSize: 14),
            ),
            const SizedBox(height: 4),
            const Text(
              '4. Квантовая тишина - для экспериментов с когерентностью',
              style: TextStyle(fontSize: 14),
            ),
            const SizedBox(height: 4),
            const Text(
              '5. Адаптивная тишина - автоматическая настройка под окружение',
              style: TextStyle(fontSize: 14),
            ),
          ],
        ),
      ),
    );
  }

  String _getModeName(String mode) {
    switch (mode) {
      case 'idle':
        return 'Неактивен';
      case 'grave_silence':
        return 'Гробовая тишина';
      case 'meditative_silence':
        return 'Медитативная тишина';
      case 'focus_silence':
        return 'Фокусная тишина';
      case 'quantum_silence':
        return 'Квантовая тишина';
      case 'adaptive_silence':
        return 'Адаптивная тишина';
      default:
        return 'Неизвестно';
    }
  }
}