D1APP-28 news pageview added

This commit is contained in:
MohammadTaha Basiri 2021-12-26 12:39:08 +03:30
parent 49045e8580
commit 63b5d17a7e
7 changed files with 122 additions and 17 deletions

View File

@ -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,
),
),
],
),
);
}
}

View File

@ -0,0 +1,3 @@
import 'package:didvan/providers/core_provider.dart';
class NewsDetailsState extends CoreProvier {}

View File

@ -1,4 +1,5 @@
import 'package:didvan/constants/app_icons.dart'; 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/card.dart';
import 'package:didvan/widgets/didvan/divider.dart'; import 'package:didvan/widgets/didvan/divider.dart';
import 'package:didvan/widgets/didvan/text.dart'; import 'package:didvan/widgets/didvan/text.dart';
@ -13,6 +14,7 @@ class NewsItem extends StatelessWidget {
return Padding( return Padding(
padding: const EdgeInsets.only(bottom: 16), padding: const EdgeInsets.only(bottom: 16),
child: DidvanCard( child: DidvanCard(
onTap: () => Navigator.of(context).pushNamed(Routes.newsDetails),
child: Column( child: Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [

View File

@ -65,7 +65,9 @@ class RadarDetails extends StatelessWidget {
bottom: 0, bottom: 0,
left: 0, left: 0,
right: 0, right: 0,
child: FloatingNavigationBar(), child: FloatingNavigationBar(
isRadar: true,
),
), ),
], ],
), ),

View File

@ -2,6 +2,8 @@ import 'package:didvan/pages/authentication/authentication.dart';
import 'package:didvan/pages/authentication/authentication_state.dart'; import 'package:didvan/pages/authentication/authentication_state.dart';
import 'package:didvan/pages/home/home.dart'; import 'package:didvan/pages/home/home.dart';
import 'package:didvan/pages/home/home_state.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/edit_profile/edit_profile.dart';
import 'package:didvan/pages/home/profile/settings/settings.dart'; import 'package:didvan/pages/home/profile/settings/settings.dart';
import 'package:didvan/pages/home/profile/settings/settings_state.dart'; import 'package:didvan/pages/home/profile/settings/settings_state.dart';
@ -55,6 +57,13 @@ class RouteGenerator {
child: const RadarDetails(), child: const RadarDetails(),
), ),
); );
case Routes.newsDetails:
return _createRoute(
ChangeNotifierProvider<NewsDetailsState>(
create: (context) => NewsDetailsState(),
child: const NewsDetails(),
),
);
default: default:
return _errorRoute(); return _errorRoute();
} }

View File

@ -6,4 +6,5 @@ class Routes {
static const String editProfile = '/edit-profile'; static const String editProfile = '/edit-profile';
static const String settings = '/settings'; static const String settings = '/settings';
static const String radarDetails = '/radar-details'; static const String radarDetails = '/radar-details';
static const String newsDetails = '/news-details';
} }

View File

@ -4,7 +4,9 @@ import 'package:didvan/widgets/didvan/text.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
class FloatingNavigationBar extends StatelessWidget { 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 @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
@ -39,18 +41,20 @@ class FloatingNavigationBar extends StatelessWidget {
), ),
), ),
const Spacer(), const Spacer(),
IconButton( if (isRadar)
onPressed: () {}, IconButton(
icon: const Icon( onPressed: () {},
DidvanIcons.bookmark_regular, icon: const Icon(
DidvanIcons.bookmark_regular,
),
), ),
), if (isRadar)
IconButton( IconButton(
onPressed: () {}, onPressed: () {},
icon: const Icon( icon: const Icon(
DidvanIcons.evaluation_regular, DidvanIcons.evaluation_regular,
),
), ),
),
SizedBox( SizedBox(
width: 48, width: 48,
child: Row( child: Row(
@ -67,12 +71,20 @@ class FloatingNavigationBar extends StatelessWidget {
], ],
), ),
), ),
IconButton( if (!isRadar)
onPressed: () {}, IconButton(
icon: const Icon( onPressed: () {},
Icons.more_horiz, icon: const Icon(
DidvanIcons.bookmark_regular,
),
),
if (isRadar)
IconButton(
onPressed: () {},
icon: const Icon(
Icons.more_horiz,
),
), ),
),
], ],
), ),
), ),