diff --git a/lib/main.dart b/lib/main.dart index daafab7..083f5ea 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -2,7 +2,8 @@ import 'package:flutter/material.dart'; import 'package:flutter/cupertino.dart'; import 'package:git_touch/screens/repo.dart'; import 'package:primer/primer.dart'; -import 'providers/notification.dart'; +import 'package:provider/provider.dart'; +import 'package:git_touch/models/notification.dart'; import 'providers/settings.dart'; import 'screens/news.dart'; import 'screens/notifications.dart'; @@ -25,7 +26,7 @@ class _HomeState extends State<Home> { // String login; Widget _buildNotificationIcon(BuildContext context) { - int count = NotificationProvider.of(context).count; + int count = Provider.of<NotificationModel>(context).count; if (count == 0) { return Icon(Icons.notifications_none); } @@ -158,19 +159,12 @@ class _HomeState extends State<Home> { class App extends StatelessWidget { @override - build(context) { - return NotificationProvider( - child: SettingsProvider( - child: DefaultTextStyle( - style: TextStyle(color: Colors.black), - child: Home(), - // theme: ThemeData( - // textTheme: TextTheme( - // title: TextStyle(color: Colors.red), - // ), - // ), - ), - ), + Widget build(BuildContext context) { + return MultiProvider( + providers: [ + ChangeNotifierProvider(builder: (context) => NotificationModel()), + ], + child: SettingsProvider(child: Home()), ); } } diff --git a/lib/models/notification.dart b/lib/models/notification.dart new file mode 100644 index 0000000..20c5804 --- /dev/null +++ b/lib/models/notification.dart @@ -0,0 +1,11 @@ +import 'package:flutter/material.dart'; + +class NotificationModel with ChangeNotifier { + int _count = 0; + int get count => _count; + + setCount(int v) { + _count = v; + notifyListeners(); + } +} diff --git a/lib/providers/notification.dart b/lib/providers/notification.dart deleted file mode 100644 index 96a5fb6..0000000 --- a/lib/providers/notification.dart +++ /dev/null @@ -1,52 +0,0 @@ -import 'package:flutter/material.dart'; - -class NotificationProvider extends StatefulWidget { - final Widget child; - - NotificationProvider({@required this.child}); - - static _NotificationProviderState of(BuildContext context) { - return (context.inheritFromWidgetOfExactType(_InheritedNotificationProvider) - as _InheritedNotificationProvider) - .data; - } - - @override - _NotificationProviderState createState() => new _NotificationProviderState(); -} - -class _NotificationProviderState extends State<NotificationProvider> { - int count = 0; - - @override - void initState() { - super.initState(); - } - - void setCount(int value) { - setState(() { - count = value; - }); - } - - @override - Widget build(BuildContext context) { - return new _InheritedNotificationProvider( - data: this, - child: widget.child, - ); - } -} - -class _InheritedNotificationProvider extends InheritedWidget { - final _NotificationProviderState data; - - _InheritedNotificationProvider({ - Key key, - @required this.data, - @required Widget child, - }) : super(key: key, child: child); - - @override - bool updateShouldNotify(_InheritedNotificationProvider old) => true; -} diff --git a/lib/screens/notifications.dart b/lib/screens/notifications.dart index d56ed3b..13eabd5 100644 --- a/lib/screens/notifications.dart +++ b/lib/screens/notifications.dart @@ -1,7 +1,8 @@ import 'package:flutter/material.dart'; import 'package:flutter/cupertino.dart'; +import 'package:provider/provider.dart'; import '../scaffolds/refresh_stateless.dart'; -import '../providers/notification.dart'; +import 'package:git_touch/models/notification.dart'; import '../providers/settings.dart'; import '../widgets/notification_item.dart'; import '../widgets/list_group.dart'; @@ -54,7 +55,7 @@ class NotificationScreenState extends State<NotificationScreen> { var ns = items.map((item) => NotificationPayload.fromJson(item)).toList(); if (index == 0) { - NotificationProvider.of(context).setCount(ns.length); + Provider.of<NotificationModel>(context).setCount(ns.length); } Map<String, NotificationGroup> _groupMap = {}; diff --git a/pubspec.yaml b/pubspec.yaml index bfff20c..6600abe 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -31,6 +31,7 @@ dependencies: launch_review: ^2.0.0 flutter_highlight: ^0.3.0 timeago: ^2.0.18 + provider: ^3.1.0 primer: git: url: git://github.com/pd4d10/primer-flutter