Skip to content

Commit 698c9f4

Browse files
committed
feat: inject repository into app
- Inject HtHeadlinesRepository - Use MultiRepositoryProvider - Use MultiBlocProvider
1 parent 61b07e0 commit 698c9f4

File tree

6 files changed

+128
-30
lines changed

6 files changed

+128
-30
lines changed

lib/app/view/app.dart

Lines changed: 44 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,54 @@ import 'package:flex_color_scheme/flex_color_scheme.dart';
22
import 'package:flutter/material.dart';
33
import 'package:flutter_bloc/flutter_bloc.dart';
44
import 'package:google_fonts/google_fonts.dart';
5+
import 'package:ht_headlines_repository/ht_headlines_repository.dart';
56
import 'package:ht_main/app/bloc/app_bloc.dart';
67
import 'package:ht_main/l10n/l10n.dart';
78
import 'package:ht_main/router/router.dart';
89

10+
class AppPage extends StatelessWidget {
11+
const AppPage({
12+
required HtHeadlinesRepository htHeadlinesRepository,
13+
super.key,
14+
}) : _htHeadlinesRepository = htHeadlinesRepository;
15+
16+
final HtHeadlinesRepository _htHeadlinesRepository;
17+
18+
@override
19+
Widget build(BuildContext context) {
20+
return MultiRepositoryProvider(
21+
providers: [RepositoryProvider.value(value: _htHeadlinesRepository)],
22+
child: MultiBlocProvider(
23+
providers: [
24+
BlocProvider(
25+
create: (context) => AppBloc(),
26+
),
27+
],
28+
child: const _AppView(),
29+
),
30+
);
31+
}
32+
}
33+
34+
class _AppView extends StatelessWidget {
35+
const _AppView();
36+
37+
@override
38+
Widget build(BuildContext context) {
39+
return BlocBuilder<AppBloc, AppState>(
40+
builder: (context, state) {
41+
return MaterialApp.router(
42+
theme:
43+
state.themeMode == ThemeMode.light ? lightTheme() : darkTheme(),
44+
routerConfig: appRouter,
45+
localizationsDelegates: AppLocalizations.localizationsDelegates,
46+
supportedLocales: AppLocalizations.supportedLocales,
47+
);
48+
},
49+
);
50+
}
51+
}
52+
953
ThemeData lightTheme() {
1054
return FlexThemeData.light(
1155
scheme: FlexScheme.material,
@@ -19,25 +63,3 @@ ThemeData darkTheme() {
1963
fontFamily: GoogleFonts.notoSans().fontFamily,
2064
);
2165
}
22-
23-
class App extends StatelessWidget {
24-
const App({super.key});
25-
26-
@override
27-
Widget build(BuildContext context) {
28-
return BlocProvider(
29-
create: (_) => AppBloc(),
30-
child: BlocBuilder<AppBloc, AppState>(
31-
builder: (context, state) {
32-
return MaterialApp.router(
33-
theme:
34-
state.themeMode == ThemeMode.light ? lightTheme() : darkTheme(),
35-
routerConfig: appRouter,
36-
localizationsDelegates: AppLocalizations.localizationsDelegates,
37-
supportedLocales: AppLocalizations.supportedLocales,
38-
);
39-
},
40-
),
41-
);
42-
}
43-
}

lib/main_development.dart

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
1+
import 'package:ht_headlines_inmemory/ht_headlines_inmemory.dart';
2+
import 'package:ht_headlines_repository/ht_headlines_repository.dart';
13
import 'package:ht_main/app/app.dart';
24
import 'package:ht_main/bootstrap.dart';
35

46
void main() {
5-
bootstrap(() => const App());
7+
final headlinesClient = HtInMemoryHeadlinesClient();
8+
final headlinesRepository = HtHeadlinesRepository(client: headlinesClient);
9+
bootstrap(() => AppPage(htHeadlinesRepository: headlinesRepository));
610
}

lib/main_production.dart

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
1+
import 'package:ht_headlines_inmemory/ht_headlines_inmemory.dart';
2+
import 'package:ht_headlines_repository/ht_headlines_repository.dart';
13
import 'package:ht_main/app/app.dart';
24
import 'package:ht_main/bootstrap.dart';
35

46
void main() {
5-
bootstrap(() => const App());
7+
final headlinesClient = HtInMemoryHeadlinesClient();
8+
final headlinesRepository = HtHeadlinesRepository(client: headlinesClient);
9+
bootstrap(() => AppPage(htHeadlinesRepository: headlinesRepository));
610
}

lib/main_staging.dart

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
1+
import 'package:ht_headlines_inmemory/ht_headlines_inmemory.dart';
2+
import 'package:ht_headlines_repository/ht_headlines_repository.dart';
13
import 'package:ht_main/app/app.dart';
24
import 'package:ht_main/bootstrap.dart';
35

46
void main() {
5-
bootstrap(() => const App());
7+
final headlinesClient = HtInMemoryHeadlinesClient();
8+
final headlinesRepository = HtHeadlinesRepository(client: headlinesClient);
9+
bootstrap(() => AppPage(htHeadlinesRepository: headlinesRepository));
610
}

pubspec.lock

Lines changed: 56 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,10 @@ packages:
2121
dependency: transitive
2222
description:
2323
name: args
24-
sha256: bf9f5caeea8d8fe6721a9c358dd8a5c1947b27f1cfaa18b39c301273594919e6
24+
sha256: d0481093c50b1da8910eb0bb301626d4d8eb7284aa739614d2b394ee09e3ea04
2525
url: "https://pub.dev"
2626
source: hosted
27-
version: "2.6.0"
27+
version: "2.7.0"
2828
async:
2929
dependency: transitive
3030
description:
@@ -229,6 +229,42 @@ packages:
229229
url: "https://pub.dev"
230230
source: hosted
231231
version: "6.2.1"
232+
ht_headlines_client:
233+
dependency: transitive
234+
description:
235+
path: "."
236+
ref: main
237+
resolved-ref: "825cc8641c5e6190f130684173b64f3c102fb0c1"
238+
url: "https://github.com/headlines-toolkit/ht-headlines-client.git"
239+
source: git
240+
version: "0.0.0"
241+
ht_headlines_inmemory:
242+
dependency: "direct main"
243+
description:
244+
path: "."
245+
ref: main
246+
resolved-ref: fc055f560e6e68cc6f61847fd2e7ade250174454
247+
url: "https://github.com/headlines-toolkit/ht-headlines-inmemory.git"
248+
source: git
249+
version: "0.0.0"
250+
ht_headlines_repository:
251+
dependency: "direct main"
252+
description:
253+
path: "."
254+
ref: main
255+
resolved-ref: c85b5dd9fa57067449418ccc32f20bcd8a7684d9
256+
url: "https://github.com/headlines-toolkit/ht-headlines-repository.git"
257+
source: git
258+
version: "0.0.0"
259+
ht_shared:
260+
dependency: "direct main"
261+
description:
262+
path: "."
263+
ref: main
264+
resolved-ref: "3f58c8396942bf85a91da3471c495aa7e78d05ea"
265+
url: "https://github.com/headlines-toolkit/ht-shared.git"
266+
source: git
267+
version: "0.0.0"
232268
http:
233269
dependency: transitive
234270
description:
@@ -277,6 +313,14 @@ packages:
277313
url: "https://pub.dev"
278314
source: hosted
279315
version: "0.7.2"
316+
json_annotation:
317+
dependency: transitive
318+
description:
319+
name: json_annotation
320+
sha256: "1ce844379ca14835a50d2f019a3099f419082cfdd231cd86a142af94dd5c6bb1"
321+
url: "https://pub.dev"
322+
source: hosted
323+
version: "4.9.0"
280324
leak_tracker:
281325
dependency: transitive
282326
description:
@@ -369,10 +413,10 @@ packages:
369413
dependency: transitive
370414
description:
371415
name: package_config
372-
sha256: "92d4488434b520a62570293fbd33bb556c7d49230791c1b4bbd973baf6d2dc67"
416+
sha256: f096c55ebb7deb7e384101542bfba8c52696c1b56fca2eb62827989ef2353bbc
373417
url: "https://pub.dev"
374418
source: hosted
375-
version: "2.1.1"
419+
version: "2.2.0"
376420
path:
377421
dependency: transitive
378422
description:
@@ -469,6 +513,14 @@ packages:
469513
url: "https://pub.dev"
470514
source: hosted
471515
version: "2.2.0"
516+
rxdart:
517+
dependency: transitive
518+
description:
519+
name: rxdart
520+
sha256: "5c3004a4a8dbb94bd4bf5412a4def4acdaa12e12f269737a5751369e12d1a962"
521+
url: "https://pub.dev"
522+
source: hosted
523+
version: "0.28.0"
472524
shelf:
473525
dependency: transitive
474526
description:

pubspec.yaml

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
name: ht_main
22
description: main headlines toolkit mobile app.
3-
version: 0.3.5
3+
version: 0.4.5
44
publish_to: none
55
repository: https://github.com/Headlines-Toolkit/ht-main
66
environment:
@@ -18,6 +18,18 @@ dependencies:
1818
sdk: flutter
1919
go_router: ^14.8.1
2020
google_fonts: ^6.2.1
21+
ht_headlines_inmemory:
22+
git:
23+
url: https://github.com/headlines-toolkit/ht-headlines-inmemory.git
24+
ref: main
25+
ht_headlines_repository:
26+
git:
27+
url: https://github.com/headlines-toolkit/ht-headlines-repository.git
28+
ref: main
29+
ht_shared:
30+
git:
31+
url: https://github.com/headlines-toolkit/ht-shared.git
32+
ref: main
2133
intl: ^0.19.0
2234
meta: ^1.16.0
2335

0 commit comments

Comments
 (0)