diff --git a/lib/pages/home/news/news_details/news_details.dart b/lib/pages/home/news/news_details/news_details.dart new file mode 100644 index 0000000..dc39cf2 --- /dev/null +++ b/lib/pages/home/news/news_details/news_details.dart @@ -0,0 +1,76 @@ +import 'package:didvan/widgets/didvan/page_view.dart'; +import 'package:didvan/widgets/didvan/text.dart'; +import 'package:didvan/widgets/floating_navigation_bar.dart'; +import 'package:didvan/widgets/skeletun_image.dart'; +import 'package:flutter/material.dart'; + +class NewsDetails extends StatelessWidget { + const NewsDetails({Key? key}) : super(key: key); + + @override + Widget build(BuildContext context) { + return Scaffold( + body: Stack( + children: [ + DidvanPageView( + pages: [ + Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + const SkeletonImage( + imageUrl: 'https://wallpapercave.com/wp/wp9373116.jpg', + width: double.infinity, + height: 200, + ), + const SizedBox(height: 20), + for (var i = 0; i < 10; i++) + Padding( + padding: const EdgeInsets.symmetric(horizontal: 16), + child: Builder( + builder: (context) { + switch (i) { + case 0: + return Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + DidvanText( + 'تحلیل شکاف فناوری صنعت فولاد ایران', + style: + Theme.of(context).textTheme.bodyText1, + ), + const SizedBox(height: 8), + const DidvanText( + 'پایگاه خبری معدن نیوز - 2 ساعت پیش', + ), + const SizedBox(height: 8), + ], + ); + default: + return const Padding( + padding: EdgeInsets.only(bottom: 8), + child: DidvanText( + 'این سایت امروز (شنبه) تیم منتخب قاره آسیا در سال ۲۰۲۱ میلادی را معرفی کرد که از ایران، سردار آزمون و محمد حسین کنعانی‌زادگان در ترکیب اصلی و مهدی طارمی و سیدمجید حسینی در جمع بازیکنان ذخیره دیده می‌شوند.', + ), + ); + } + }, + ), + ), + const SizedBox(height: 20), + ], + ), + ], + ), + const Positioned( + left: 0, + right: 0, + bottom: 0, + child: FloatingNavigationBar( + isRadar: false, + ), + ), + ], + ), + ); + } +} diff --git a/lib/pages/home/news/news_details/news_details_state.dart b/lib/pages/home/news/news_details/news_details_state.dart new file mode 100644 index 0000000..116b980 --- /dev/null +++ b/lib/pages/home/news/news_details/news_details_state.dart @@ -0,0 +1,3 @@ +import 'package:didvan/providers/core_provider.dart'; + +class NewsDetailsState extends CoreProvier {} diff --git a/lib/pages/home/news/widgets/news_item.dart b/lib/pages/home/news/widgets/news_item.dart index 5b4a799..4f722b1 100644 --- a/lib/pages/home/news/widgets/news_item.dart +++ b/lib/pages/home/news/widgets/news_item.dart @@ -1,4 +1,5 @@ import 'package:didvan/constants/app_icons.dart'; +import 'package:didvan/routes/routes.dart'; import 'package:didvan/widgets/didvan/card.dart'; import 'package:didvan/widgets/didvan/divider.dart'; import 'package:didvan/widgets/didvan/text.dart'; @@ -13,6 +14,7 @@ class NewsItem extends StatelessWidget { return Padding( padding: const EdgeInsets.only(bottom: 16), child: DidvanCard( + onTap: () => Navigator.of(context).pushNamed(Routes.newsDetails), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ diff --git a/lib/pages/home/radar/radar_details/radar_details.dart b/lib/pages/home/radar/radar_details/radar_details.dart index 76d3861..bcdfcae 100644 --- a/lib/pages/home/radar/radar_details/radar_details.dart +++ b/lib/pages/home/radar/radar_details/radar_details.dart @@ -65,7 +65,9 @@ class RadarDetails extends StatelessWidget { bottom: 0, left: 0, right: 0, - child: FloatingNavigationBar(), + child: FloatingNavigationBar( + isRadar: true, + ), ), ], ), diff --git a/lib/routes/route_generator.dart b/lib/routes/route_generator.dart index 761446d..6927ee1 100644 --- a/lib/routes/route_generator.dart +++ b/lib/routes/route_generator.dart @@ -2,6 +2,8 @@ import 'package:didvan/pages/authentication/authentication.dart'; import 'package:didvan/pages/authentication/authentication_state.dart'; import 'package:didvan/pages/home/home.dart'; import 'package:didvan/pages/home/home_state.dart'; +import 'package:didvan/pages/home/news/news_details/news_details.dart'; +import 'package:didvan/pages/home/news/news_details/news_details_state.dart'; import 'package:didvan/pages/home/profile/edit_profile/edit_profile.dart'; import 'package:didvan/pages/home/profile/settings/settings.dart'; import 'package:didvan/pages/home/profile/settings/settings_state.dart'; @@ -55,6 +57,13 @@ class RouteGenerator { child: const RadarDetails(), ), ); + case Routes.newsDetails: + return _createRoute( + ChangeNotifierProvider( + create: (context) => NewsDetailsState(), + child: const NewsDetails(), + ), + ); default: return _errorRoute(); } diff --git a/lib/routes/routes.dart b/lib/routes/routes.dart index 752dece..59254bc 100644 --- a/lib/routes/routes.dart +++ b/lib/routes/routes.dart @@ -6,4 +6,5 @@ class Routes { static const String editProfile = '/edit-profile'; static const String settings = '/settings'; static const String radarDetails = '/radar-details'; + static const String newsDetails = '/news-details'; } diff --git a/lib/widgets/floating_navigation_bar.dart b/lib/widgets/floating_navigation_bar.dart index f7c33c4..1dd24f0 100644 --- a/lib/widgets/floating_navigation_bar.dart +++ b/lib/widgets/floating_navigation_bar.dart @@ -4,7 +4,9 @@ import 'package:didvan/widgets/didvan/text.dart'; import 'package:flutter/material.dart'; class FloatingNavigationBar extends StatelessWidget { - const FloatingNavigationBar({Key? key}) : super(key: key); + final bool isRadar; + const FloatingNavigationBar({Key? key, required this.isRadar}) + : super(key: key); @override Widget build(BuildContext context) { @@ -39,18 +41,20 @@ class FloatingNavigationBar extends StatelessWidget { ), ), const Spacer(), - IconButton( - onPressed: () {}, - icon: const Icon( - DidvanIcons.bookmark_regular, + if (isRadar) + IconButton( + onPressed: () {}, + icon: const Icon( + DidvanIcons.bookmark_regular, + ), ), - ), - IconButton( - onPressed: () {}, - icon: const Icon( - DidvanIcons.evaluation_regular, + if (isRadar) + IconButton( + onPressed: () {}, + icon: const Icon( + DidvanIcons.evaluation_regular, + ), ), - ), SizedBox( width: 48, child: Row( @@ -67,12 +71,20 @@ class FloatingNavigationBar extends StatelessWidget { ], ), ), - IconButton( - onPressed: () {}, - icon: const Icon( - Icons.more_horiz, + if (!isRadar) + IconButton( + onPressed: () {}, + icon: const Icon( + DidvanIcons.bookmark_regular, + ), + ), + if (isRadar) + IconButton( + onPressed: () {}, + icon: const Icon( + Icons.more_horiz, + ), ), - ), ], ), ),