You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

111 lines
4.0 KiB

// This file is part of Hamlet Social.
// Hamlet Social is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// any later version.
// Hamlet Social is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// GNU General Public License for more details.
// You should have received a copy of the GNU General Public License
// along with Hamlet Social. If not, see <>.
import 'package:country_codes/country_codes.dart';
import 'package:flutter/material.dart';
import 'package:hamlet_social/data/instance.dart';
import 'package:hamlet_social/endpoints/unauthenticated/available_instances.dart';
import 'package:hamlet_social/route_generator.dart';
import 'package:hamlet_social/views/authenticated/timeline_screen.dart';
import 'package:hamlet_social/views/unauthenticated/auth_screen.dart';
import 'package:pleroma_dart/pleroma_dart.dart';
import 'package:pleroma_flutter/pleroma_flutter.dart';
import 'package:provider/provider.dart';
import 'package:web_socket_channel/io.dart';
Future<void> main() async {
await CountryCodes.init();
Pleroma pleroma = Pleroma(
websocketFactory: (uri) => IOWebSocketChannel.connect(uri),
final AuthBloc authBloc = AuthBloc(
storage: AuthStorage(),
await authBloc.initalized;
bloc: authBloc,
pleroma: pleroma,
hamletInstances: await availableInstances()));
class MyApp extends StatelessWidget {
// This widget is the root of your application.
const MyApp(
{Key key, @required this.bloc, this.pleroma, this.hamletInstances})
: super(key: key);
final AuthBloc bloc;
final Pleroma pleroma;
final List<HamletInstance> hamletInstances;
Widget build(BuildContext context) {
return MultiProvider(
providers: [
Provider<AuthBloc>(create: (_) => bloc),
Provider<Pleroma>(create: (_) => pleroma),
Provider<List<HamletInstance>>(create: (_) => hamletInstances),
child: MaterialApp(
title: 'Hamlet',
theme: ThemeData(
// This is the theme of your application.
// Try running your application with "flutter run". You'll see the
// application has a blue toolbar. Then, without quitting the app, try
// changing the primarySwatch below to and then invoke
// "hot reload" (press "r" in the console where you ran "flutter run",
// or simply save your changes to "hot reload" in a Flutter IDE).
// Notice that the counter didn't reset back to zero; the application
// is not restarted.
// This makes the visual density adapt to the platform that you run
// the app on. For desktop platforms, the controls will be smaller and
// closer together (more dense) than on mobile platforms.
visualDensity: VisualDensity.adaptivePlatformDensity,
initialRoute: '/',
onGenerateRoute: RouteGenerator.generateRoute,
// routes: {
// '/': (context) =>
// },
// home: Navigator(
// pages: [
// MaterialPage(
// child: AuthScreen(hamletInstances: widget.hamletInstances)),
// ],
// onPopPage: (route, result) {
// if (!route.didPop(result)) return false;
// return true;
// },
// ),
// home: bloc.account.value == null
// ? AuthScreen(hamletInstances: hamletInstances)
// : TimelineScreen(account: bloc.account.value),