11import 'package:flutter/material.dart' ;
2+ import 'package:flutter_bloc/flutter_bloc.dart' ;
3+ import 'package:flutter_weather/src/api/api_keys.dart' ;
4+ import 'package:flutter_weather/src/bloc/weather_bloc_observre.dart' ;
25import 'package:flutter_weather/src/screens/routes.dart' ;
36import 'package:flutter_weather/src/screens/weather_screen.dart' ;
47import 'package:bloc/bloc.dart' ;
58import 'package:flutter_weather/src/themes.dart' ;
69import 'package:flutter_weather/src/utils/constants.dart' ;
710import 'package:flutter_weather/src/utils/converters.dart' ;
811import 'package:shared_preferences/shared_preferences.dart' ;
12+ import 'package:http/http.dart' as http;
913
10- void main () {
11- BlocSupervisor ().delegate = SimpleBlocDelegate ();
12- runApp (AppStateContainer (child: WeatherApp ()));
13- }
14+ import 'src/api/weather_api_client.dart' ;
15+ import 'src/bloc/weather_bloc.dart' ;
16+ import 'src/repository/weather_repository.dart' ;
1417
15- class SimpleBlocDelegate extends BlocDelegate {
16- @override
17- onTransition (Bloc bloc, Transition transition) {
18- super .onTransition (bloc, transition);
19- print (transition);
20- }
18+ void main () {
19+ Bloc .observer = SimpleBlocObserver ();
20+
21+ final WeatherRepository weatherRepository = WeatherRepository (
22+ weatherApiClient: WeatherApiClient (
23+ httpClient: http.Client (),
24+ apiKey: ApiKey .OPEN_WEATHER_MAP ,
25+ ),
26+ );
27+
28+ runApp (AppStateContainer (
29+ child: WeatherApp (weatherRepository: weatherRepository),
30+ ));
2131}
2232
2333class WeatherApp extends StatelessWidget {
34+ final WeatherRepository weatherRepository;
35+
36+ WeatherApp ({Key key, @required this .weatherRepository})
37+ : assert (weatherRepository != null ),
38+ super (key: key);
39+
2440 @override
2541 Widget build (BuildContext context) {
2642 return MaterialApp (
2743 title: 'Flutter Weather App' ,
2844 theme: AppStateContainer .of (context).theme,
29- home: WeatherScreen (),
45+ home: BlocProvider (
46+ create: (context) => WeatherBloc (weatherRepository: weatherRepository),
47+ child: WeatherScreen (),
48+ ),
3049 routes: Routes .mainRoute,
3150 );
3251 }
@@ -43,9 +62,9 @@ class AppStateContainer extends StatefulWidget {
4362 _AppStateContainerState createState () => _AppStateContainerState ();
4463
4564 static _AppStateContainerState of (BuildContext context) {
46- return (context. inheritFromWidgetOfExactType ( _InheritedStateContainer )
47- as _InheritedStateContainer )
48- .data;
65+ var widget =
66+ context. dependOnInheritedWidgetOfExactType < _InheritedStateContainer >();
67+ return widget .data;
4968 }
5069}
5170
@@ -54,7 +73,6 @@ class _AppStateContainerState extends State<AppStateContainer> {
5473 int themeCode = Themes .DARK_THEME_CODE ;
5574 TemperatureUnit temperatureUnit = TemperatureUnit .celsius;
5675
57-
5876 @override
5977 initState () {
6078 super .initState ();
0 commit comments