/*
 * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
 * SPDX-License-Identifier: MIT-0
 */

import 'package:flutter/material.dart';
import 'package:flutter_demo_chime_sdk/view_models/join_meeting_view_model.dart';
import 'package:flutter_demo_chime_sdk/view_models/meeting_view_model.dart';
import 'package:flutter_demo_chime_sdk/views/join_meeting.dart';
import 'package:flutter_demo_chime_sdk/views/meeting.dart';
import 'package:provider/provider.dart';

import 'method_channel_coordinator.dart';

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

class MyApp extends StatelessWidget {
  const MyApp({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return MultiProvider(
      providers: [
        ChangeNotifierProvider(create: (_) => MethodChannelCoordinator()),
        ChangeNotifierProvider(create: (_) => JoinMeetingViewModel()),
        ChangeNotifierProvider(create: (context) => MeetingViewModel(context)),
      ],
      child: GestureDetector(
        onTap: () {
          // Unfocus keyboard when tapping on non-clickable widget
          FocusScopeNode currentFocus = FocusScope.of(context);
          if (!currentFocus.hasPrimaryFocus) {
            FocusManager.instance.primaryFocus?.unfocus();
          }
        },
        child: MaterialApp(
          title: 'Amazon Chime SDK Flutter Demo',
          theme: ThemeData(
            primarySwatch: Colors.blue,
          ),
          routes: {
            '/joinMeeting': (_) => JoinMeetingView(),
            '/meeting': (_) => const MeetingView(),
          },
          home: JoinMeetingView(),
        ),
      ),
    );
  }
}