Sonnat Project
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

107 lines
3.9 KiB

import 'package:flutter/material.dart';
import 'package:flutter_svg/flutter_svg.dart';
import 'package:sonnat/core/extensions/context_extension.dart';
import 'package:sonnat/core/extensions/string_extension.dart';
import 'package:sonnat/core/utils/app_constants.dart';
import 'package:sonnat/features/posts/widgets/filter_item_widget.dart';
import 'package:sonnat/features/posts/widgets/post_item_widget.dart';
class PostsScreen extends StatefulWidget {
final String title;
const PostsScreen({super.key, required this.title});
@override
State<PostsScreen> createState() => _PostsScreenState();
}
class _PostsScreenState extends State<PostsScreen> {
final List<FilterItem> _filterList = [
const FilterItem(selected: false, title: 'پر تکرارترین‌ها'),
const FilterItem(selected: true, title: 'مشابه‌ها'),
const FilterItem(selected: false, title: 'محبوبترین‌ها'),
const FilterItem(selected: false, title: 'برای‌ شما'),
const FilterItem(selected: false, title: 'محبوبترین‌ها'),
const FilterItem(selected: false, title: 'پر تکرارترین‌ها'),
const FilterItem(selected: true, title: 'مشابه‌ها'),
const FilterItem(selected: false, title: 'محبوبترین‌ها'),
const FilterItem(selected: false, title: 'برای‌ شما'),
const FilterItem(selected: false, title: 'محبوبترین‌ها'),
];
@override
Widget build(BuildContext context) {
return Scaffold(
body: Column(
children: [
SizedBox(height: context.height * 26 / AppConstants.instance.appHeight),
Padding(
padding: EdgeInsets.symmetric(horizontal: context.width * 26 / AppConstants.instance.appWidth),
child: Row(
children: [
GestureDetector(
onTap: () {},
child: SvgPicture.asset(
'ic_more'.svgPath,
),
),
SizedBox(width: context.width * 8 / AppConstants.instance.appWidth),
GestureDetector(
onTap: () {},
child: SvgPicture.asset(
'ic_rounded_search'.svgPath,
),
),
const Spacer(),
Text(
widget.title,
style: const TextStyle(
color: Color(0xff404966),
fontSize: 22,
),
),
const Spacer(),
GestureDetector(
onTap: () {
Navigator.pop(context);
},
child: SvgPicture.asset(
'ic_back'.svgPath,
),
),
],
),
),
SizedBox(height: context.height * 35 / AppConstants.instance.appHeight),
SizedBox(
height: context.height * 31 / AppConstants.instance.appHeight,
child: ListView.builder(
padding: EdgeInsetsDirectional.only(start: context.width * 26 / AppConstants.instance.appWidth),
itemBuilder: (context, index) {
return FilterItemWidget(title: _filterList[index].title, selected: _filterList[index].selected);
},
itemCount: _filterList.length,
scrollDirection: Axis.horizontal,
),
),
SizedBox(height: context.height * 26 / AppConstants.instance.appHeight),
Expanded(
child: ListView.builder(
itemBuilder: (context, index) {
return const PostItemWidget();
},
itemCount: 10,
),
)
],
),
);
}
}
class FilterItem {
final bool selected;
final String title;
const FilterItem({required this.selected, required this.title});
}