diff --git a/README.md b/README.md
index 97dff78..c45e632 100644
--- a/README.md
+++ b/README.md
@@ -14,10 +14,10 @@ This example uses a CustomScrollView, JSON Rest API, BottonNavigationBar,SliverL
* [*__http__*](https://pub.dartlang.org/packages/http)
* [*__webview_flutter__*](https://pub.dartlang.org/packages/webview_flutter)
* [*__shared_preferences__*](https://pub.dartlang.org/packages/shared_preferences)
-* [*__share__*](https://pub.dartlang.org/packages/share)
-* [*__cloud_firestore__*](https://pub.dartlang.org/packages/cloud_firestore)
-* [*__uuid__*](https://pub.dartlang.org/packages/uuid)
-* [*__dynamic_theme__*](https://pub.dartlang.org/packages/dynamic_theme)
+* [*__share_plus__*](https://pub.dev/packages/share_plus)
+* [*__cloud_firestore__*](https://pub.dev/packages/cloud_firestore)
+* [*__uuid__*](https://pub.dev/packages/uuid)
+* [*__adaptive_theme__*](https://pub.dev/packages/adaptive_theme)
* [*__flutter_picker__*](https://pub.dartlang.org/packages/flutter_picker)
* [*__flutter_material_color_picker__*](https://pub.dartlang.org/packages/flutter_material_color_picker)
diff --git a/news_app/.metadata b/news_app/.metadata
index fd2a86f..12216e6 100644
--- a/news_app/.metadata
+++ b/news_app/.metadata
@@ -4,7 +4,7 @@
# This file should be version controlled and should not be manually edited.
version:
- revision: 5391447fae6209bb21a89e6a5a6583cac1af9b4b
- channel: beta
+ revision: 8defaa71a77c16e8547abdbfad2053ce3a6e2d5b
+ channel: stable
project_type: app
diff --git a/news_app/android/app/src/main/AndroidManifest.xml b/news_app/android/app/src/main/AndroidManifest.xml
index 570c700..e85e9a3 100644
--- a/news_app/android/app/src/main/AndroidManifest.xml
+++ b/news_app/android/app/src/main/AndroidManifest.xml
@@ -13,27 +13,33 @@
additional functionality it is fine to subclass or reimplement
FlutterApplication and put your custom class here. -->
-
+ android:name="io.flutter.embedding.android.NormalTheme"
+ android:resource="@style/NormalTheme" />
+
+
+
+
+
+
+
diff --git a/news_app/android/app/src/main/java/com/kaparray/newsapp/MainActivity.java b/news_app/android/app/src/main/java/com/kaparray/newsapp/MainActivity.java
index b5e63c3..9d68ba2 100644
--- a/news_app/android/app/src/main/java/com/kaparray/newsapp/MainActivity.java
+++ b/news_app/android/app/src/main/java/com/kaparray/newsapp/MainActivity.java
@@ -1,13 +1,6 @@
package com.kaparray.newsapp;
-import android.os.Bundle;
-import io.flutter.app.FlutterActivity;
-import io.flutter.plugins.GeneratedPluginRegistrant;
+import io.flutter.embedding.android.FlutterActivity;
public class MainActivity extends FlutterActivity {
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- GeneratedPluginRegistrant.registerWith(this);
- }
}
diff --git a/news_app/lib/blocs/news_bloc.dart b/news_app/lib/blocs/news_bloc.dart
index afa2635..9b152f3 100644
--- a/news_app/lib/blocs/news_bloc.dart
+++ b/news_app/lib/blocs/news_bloc.dart
@@ -1,3 +1,4 @@
+// @dart=2.9
import '../resources/repository.dart';
import 'package:rxdart/rxdart.dart';
import '../models/news_model.dart';
@@ -8,9 +9,9 @@ class NewsBloc {
final _newsSearchFetcher = PublishSubject();
final _newsLikeFetcher = PublishSubject();
- Observable get allNews => _newsFetcher.stream;
- Observable get searchNews => _newsSearchFetcher.stream;
- Observable get likeNews => _newsLikeFetcher.stream;
+ Stream get allNews => _newsFetcher.stream;
+ Stream get searchNews => _newsSearchFetcher.stream;
+ Stream get likeNews => _newsLikeFetcher.stream;
fetchLikedNews() async {
NewsModel newsModel = await _repository.fetchLikedNews();
diff --git a/news_app/lib/main.dart b/news_app/lib/main.dart
index ed96718..0296e4d 100644
--- a/news_app/lib/main.dart
+++ b/news_app/lib/main.dart
@@ -1,7 +1,8 @@
+// @dart=2.9
import 'package:flutter/material.dart';
import 'package:news_app/blocs/news_bloc.dart';
import 'package:news_app/ui/bottom_nav_bar.dart';
-import 'package:dynamic_theme/dynamic_theme.dart';
+import 'package:adaptive_theme/adaptive_theme.dart';
import 'package:shared_preferences/shared_preferences.dart';
Future _prefs = SharedPreferences.getInstance();
@@ -10,8 +11,10 @@ int color;
String theme;
void main() async {
+ WidgetsFlutterBinding.ensureInitialized();
await initApp();
- runApp(App());
+ final savedThemeMode = await AdaptiveTheme.getThemeMode();
+ runApp(App(savedThemeMode: savedThemeMode));
}
initApp() async {
@@ -32,12 +35,15 @@ initApp() async {
@immutable
class App extends StatefulWidget {
+ final AdaptiveThemeMode? savedThemeMode;
+
+ const App({Key key, this.savedThemeMode}) : super(key: key);
+
@override
createState() => AppState();
}
class AppState extends State {
- Brightness _brightness;
@override
void dispose() {
@@ -47,23 +53,35 @@ class AppState extends State {
@override
Widget build(BuildContext context) {
- if (theme == 'dark')
- _brightness = Brightness.dark;
- else if (theme == 'light') _brightness = Brightness.light;
+ final brightness = theme == 'dark' ? Brightness.dark : Brightness.light;
+ final seedColor = Color(color ?? 0xFF26A69A);
- return DynamicTheme(
- defaultBrightness: _brightness,
- data: (brightness) => ThemeData(
- brightness: _brightness, accentColor: Color(color ?? 0xFF26A69A)),
- themedWidgetBuilder: (context, theme) {
- return MaterialApp(
- debugShowCheckedModeBanner: false,
- home: BottomNavBar(),
- theme: theme,
- routes: {
- "/news": (_) => BottomNavBar(),
- },
- );
- });
+ return AdaptiveTheme(
+ light: ThemeData(
+ useMaterial3: true,
+ brightness: Brightness.light,
+ colorSchemeSeed: seedColor,
+ ),
+ dark: ThemeData(
+ useMaterial3: true,
+ brightness: Brightness.dark,
+ colorSchemeSeed: seedColor,
+ ),
+ initial: widget.savedThemeMode ??
+ (brightness == Brightness.dark
+ ? AdaptiveThemeMode.dark
+ : AdaptiveThemeMode.light),
+ builder: (themeData, darkTheme) {
+ return MaterialApp(
+ debugShowCheckedModeBanner: false,
+ home: BottomNavBar(),
+ theme: themeData,
+ darkTheme: darkTheme,
+ routes: {
+ "/news": (_) => BottomNavBar(),
+ },
+ );
+ },
+ );
}
}
diff --git a/news_app/lib/models/news_model.dart b/news_app/lib/models/news_model.dart
index 1292572..97c3baa 100644
--- a/news_app/lib/models/news_model.dart
+++ b/news_app/lib/models/news_model.dart
@@ -1,3 +1,4 @@
+// @dart=2.9
class NewsModel {
String status;
int totalResults;
diff --git a/news_app/lib/resources/news_api_provider.dart b/news_app/lib/resources/news_api_provider.dart
index 6058a14..0e7d7a5 100644
--- a/news_app/lib/resources/news_api_provider.dart
+++ b/news_app/lib/resources/news_api_provider.dart
@@ -1,3 +1,4 @@
+// @dart=2.9
import 'dart:async';
import 'package:http/http.dart' show Client;
import 'package:shared_preferences/shared_preferences.dart';
diff --git a/news_app/lib/resources/repository.dart b/news_app/lib/resources/repository.dart
index 54b820f..a5874cf 100644
--- a/news_app/lib/resources/repository.dart
+++ b/news_app/lib/resources/repository.dart
@@ -1,3 +1,4 @@
+// @dart=2.9
import 'dart:async';
import 'news_api_provider.dart';
diff --git a/news_app/lib/ui/bottom_nav_bar.dart b/news_app/lib/ui/bottom_nav_bar.dart
index 776412c..4930e7d 100644
--- a/news_app/lib/ui/bottom_nav_bar.dart
+++ b/news_app/lib/ui/bottom_nav_bar.dart
@@ -1,3 +1,4 @@
+// @dart=2.9
import 'package:flutter/material.dart';
import 'package:news_app/ui/screens/liked_list.dart';
import 'package:news_app/ui/screens/news_list.dart';
@@ -25,16 +26,16 @@ class BottomNavBarState extends State {
bottomNavigationBar: BottomNavigationBar(
items: [
BottomNavigationBarItem(
- icon: Icon(Icons.chrome_reader_mode), title: Text('News')),
+ icon: Icon(Icons.chrome_reader_mode), label: 'News'),
BottomNavigationBarItem(
icon: Icon(Icons.favorite_border),
- title: Text('Favorit'),
+ label: 'Favorit',
activeIcon: Icon(Icons.favorite)),
BottomNavigationBarItem(
- icon: Icon(Icons.settings), title: Text('Settings'))
+ icon: Icon(Icons.settings), label: 'Settings')
],
currentIndex: _currentItem,
- fixedColor: Theme.of(context).accentColor,
+ selectedItemColor: Theme.of(context).accentColor,
onTap: _onItemTapped,
),
body: _listWidgets[_currentItem]);
diff --git a/news_app/lib/ui/screens/liked_list.dart b/news_app/lib/ui/screens/liked_list.dart
index 49dc3bf..963b075 100644
--- a/news_app/lib/ui/screens/liked_list.dart
+++ b/news_app/lib/ui/screens/liked_list.dart
@@ -1,3 +1,4 @@
+// @dart=2.9
import 'package:news_app/blocs/news_bloc.dart';
import 'package:news_app/ui/views/stream_builder.dart';
import 'package:flutter/material.dart';
diff --git a/news_app/lib/ui/screens/news_list.dart b/news_app/lib/ui/screens/news_list.dart
index cf67fa6..b7f313f 100644
--- a/news_app/lib/ui/screens/news_list.dart
+++ b/news_app/lib/ui/screens/news_list.dart
@@ -1,3 +1,4 @@
+// @dart=2.9
import 'package:news_app/blocs/news_bloc.dart';
import 'package:news_app/ui/views/search_bar.dart';
import 'package:news_app/ui/views/stream_builder.dart';
diff --git a/news_app/lib/ui/screens/serch_screen.dart b/news_app/lib/ui/screens/serch_screen.dart
index 989bf8c..c503802 100644
--- a/news_app/lib/ui/screens/serch_screen.dart
+++ b/news_app/lib/ui/screens/serch_screen.dart
@@ -1,3 +1,4 @@
+// @dart=2.9
import 'package:flutter/material.dart';
import 'package:news_app/blocs/news_bloc.dart';
import 'package:news_app/ui/views/stream_builder.dart';
diff --git a/news_app/lib/ui/screens/settings_screen.dart b/news_app/lib/ui/screens/settings_screen.dart
index 4a5b81b..8fc3958 100644
--- a/news_app/lib/ui/screens/settings_screen.dart
+++ b/news_app/lib/ui/screens/settings_screen.dart
@@ -1,6 +1,7 @@
+// @dart=2.9
import 'dart:convert';
import 'package:flutter_picker/flutter_picker.dart';
-import 'package:dynamic_theme/dynamic_theme.dart';
+import 'package:adaptive_theme/adaptive_theme.dart';
import 'package:flutter/material.dart';
import 'package:shared_preferences/shared_preferences.dart';
import 'package:flutter_material_color_picker/flutter_material_color_picker.dart';
@@ -122,11 +123,10 @@ class SettingsState extends State {
// Theme Logic
changeTheme(value) async {
SharedPreferences prefs = await _prefs;
- DynamicTheme.of(context).setThemeData(ThemeData(
- accentColor: Theme.of(context).accentColor,
- brightness: Theme.of(context).brightness == Brightness.dark
- ? Brightness.light
- : Brightness.dark));
+ if (AdaptiveTheme.of(context).mode == AdaptiveThemeMode.dark)
+ AdaptiveTheme.of(context).setLight();
+ else
+ AdaptiveTheme.of(context).setDark();
setState(() {
swTheme = value;
});
@@ -181,7 +181,7 @@ class SettingsState extends State {
showDialog(
context: context,
- child: SimpleDialog(
+ builder: (context) => SimpleDialog(
title: Text('Primary color', style: TextStyle(fontSize: 24)),
children: [
MaterialColorPicker(
@@ -209,16 +209,25 @@ class SettingsState extends State {
Row(
mainAxisAlignment: MainAxisAlignment.end,
children: [
- FlatButton(
+ TextButton(
onPressed: () {
Navigator.pop(context, false);
},
child: Text("Cancel")),
- FlatButton(
+ TextButton(
onPressed: () async {
- DynamicTheme.of(context).setThemeData(ThemeData(
- accentColor: local,
- brightness: Theme.of(context).brightness));
+ AdaptiveTheme.of(context).setTheme(
+ light: ThemeData(
+ useMaterial3: true,
+ brightness: Brightness.light,
+ colorSchemeSeed: local,
+ ),
+ dark: ThemeData(
+ useMaterial3: true,
+ brightness: Brightness.dark,
+ colorSchemeSeed: local,
+ ),
+ );
await prefs.setInt('color', local.value);
Navigator.pop(context, false);
},
diff --git a/news_app/lib/ui/screens/web_view.dart b/news_app/lib/ui/screens/web_view.dart
index 71e2d1d..a29ca33 100644
--- a/news_app/lib/ui/screens/web_view.dart
+++ b/news_app/lib/ui/screens/web_view.dart
@@ -1,3 +1,4 @@
+// @dart=2.9
import 'dart:async';
import 'package:flutter/material.dart';
import 'package:news_app/models/news_model.dart';
diff --git a/news_app/lib/ui/utils/back_to_start.dart b/news_app/lib/ui/utils/back_to_start.dart
index b6cc416..1c0dbb7 100644
--- a/news_app/lib/ui/utils/back_to_start.dart
+++ b/news_app/lib/ui/utils/back_to_start.dart
@@ -1,3 +1,4 @@
+// @dart=2.9
import 'package:flutter/material.dart';
backToStart(ScrollController scrollController) async {
diff --git a/news_app/lib/ui/views/item_build.dart b/news_app/lib/ui/views/item_build.dart
index 7bc7a4f..a6b690a 100644
--- a/news_app/lib/ui/views/item_build.dart
+++ b/news_app/lib/ui/views/item_build.dart
@@ -1,9 +1,10 @@
+// @dart=2.9
import 'package:flutter/material.dart';
import 'package:intl/intl.dart';
import 'package:news_app/models/news_model.dart';
import 'package:news_app/resources/news_api_provider.dart';
import 'package:news_app/ui/screens/web_view.dart';
-import 'package:share/share.dart';
+import 'package:share_plus/share_plus.dart';
import 'package:url_launcher/url_launcher.dart';
import 'package:shared_preferences/shared_preferences.dart';
diff --git a/news_app/lib/ui/views/search_bar.dart b/news_app/lib/ui/views/search_bar.dart
index 428fedf..77b5af0 100644
--- a/news_app/lib/ui/views/search_bar.dart
+++ b/news_app/lib/ui/views/search_bar.dart
@@ -1,3 +1,4 @@
+// @dart=2.9
import 'package:flutter/material.dart';
import 'package:news_app/ui/screens/serch_screen.dart';
import 'package:shared_preferences/shared_preferences.dart';
diff --git a/news_app/lib/ui/views/stream_builder.dart b/news_app/lib/ui/views/stream_builder.dart
index 7d6f3a9..6da13a8 100644
--- a/news_app/lib/ui/views/stream_builder.dart
+++ b/news_app/lib/ui/views/stream_builder.dart
@@ -1,3 +1,4 @@
+// @dart=2.9
import 'package:flutter/material.dart';
import 'package:news_app/ui/views/item_build.dart';
diff --git a/news_app/pubspec.yaml b/news_app/pubspec.yaml
index fcb2794..d149396 100644
--- a/news_app/pubspec.yaml
+++ b/news_app/pubspec.yaml
@@ -10,28 +10,28 @@ description: A new Flutter project.
version: 1.0.5
environment:
- sdk: ">=2.0.0-dev.68.0 <3.0.0"
+ sdk: ">=2.12.0 <3.0.0"
dependencies:
flutter:
sdk: flutter
- rxdart: ^0.18.0
- http: any
- webview_flutter: ^0.3.0
- url_launcher: ^4.2.0+1
- shared_preferences: ^0.4.3
- share: ^0.5.3
- cloud_firestore: ^0.8.2+3
- uuid: ^1.0.3
- dynamic_theme: ^1.0.0
- flutter_picker: ^1.0.6
- flutter_material_color_picker: ^0.0.4
- intl: ^0.15.7
+ rxdart: ^0.27.7
+ http: ^0.13.6
+ webview_flutter: ^4.2.2
+ url_launcher: ^6.2.6
+ shared_preferences: ^2.2.2
+ share_plus: ^8.0.2
+ cloud_firestore: ^4.15.9
+ uuid: ^3.0.7
+ adaptive_theme: ^2.3.1
+ flutter_picker: ^2.1.0
+ flutter_material_color_picker: ^1.1.0+2
+ intl: ^0.18.1
# The following adds the Cupertino Icons font to your application.
# Use with the CupertinoIcons class for iOS style icons.
- cupertino_icons: ^0.1.2
+ cupertino_icons: ^1.0.2
dev_dependencies:
flutter_test: