diff --git a/ios/Runner.xcodeproj/project.pbxproj b/ios/Runner.xcodeproj/project.pbxproj
index 31db8575..f9869e3a 100644
--- a/ios/Runner.xcodeproj/project.pbxproj
+++ b/ios/Runner.xcodeproj/project.pbxproj
@@ -388,7 +388,7 @@
CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements;
CODE_SIGN_IDENTITY = "Apple Distribution: ITVIO, OOO (VL68C36HYS)";
CODE_SIGN_STYLE = Manual;
- CURRENT_PROJECT_VERSION = 18;
+ CURRENT_PROJECT_VERSION = 19;
DEVELOPMENT_TEAM = VL68C36HYS;
ENABLE_BITCODE = NO;
FRAMEWORK_SEARCH_PATHS = (
@@ -538,7 +538,7 @@
CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements;
CODE_SIGN_IDENTITY = "Apple Distribution: ITVIO, OOO (VL68C36HYS)";
CODE_SIGN_STYLE = Manual;
- CURRENT_PROJECT_VERSION = 18;
+ CURRENT_PROJECT_VERSION = 19;
DEVELOPMENT_TEAM = VL68C36HYS;
ENABLE_BITCODE = NO;
FRAMEWORK_SEARCH_PATHS = (
@@ -576,7 +576,7 @@
CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements;
CODE_SIGN_IDENTITY = "Apple Distribution: ITVIO, OOO (VL68C36HYS)";
CODE_SIGN_STYLE = Manual;
- CURRENT_PROJECT_VERSION = 18;
+ CURRENT_PROJECT_VERSION = 19;
DEVELOPMENT_TEAM = VL68C36HYS;
ENABLE_BITCODE = NO;
FRAMEWORK_SEARCH_PATHS = (
diff --git a/ios/Runner/Info.plist b/ios/Runner/Info.plist
index 83164ead..8abff7a5 100644
--- a/ios/Runner/Info.plist
+++ b/ios/Runner/Info.plist
@@ -21,7 +21,7 @@
CFBundleSignature
????
CFBundleVersion
- 18
+ 19
ITSAppUsesNonExemptEncryption
LSRequiresIPhoneOS
diff --git a/lib/features/feed/presentation/widgets/blog_post_widget.dart b/lib/features/feed/presentation/widgets/blog_post_widget.dart
index 542fe274..bc7faec0 100644
--- a/lib/features/feed/presentation/widgets/blog_post_widget.dart
+++ b/lib/features/feed/presentation/widgets/blog_post_widget.dart
@@ -56,91 +56,95 @@ class _BlogPostWidgetState extends State {
crossAxisAlignment: CrossAxisAlignment.start,
children: [
const SizedBox(height: 12),
- Padding(
- padding: const EdgeInsets.symmetric(horizontal: 12),
- child: Row(
- children: [
- GestureDetector(
- onTap: () {
- GoRouter.of(context).pushNamed(
- 'profileScreen',
- extra: Author(
- authorSlug: state.feedBlogPostList[widget.index].author.authorSlug,
- authorName: state.feedBlogPostList[widget.index].author.authorName,
- authorProfileIcon: state.feedBlogPostList[widget.index].author.authorProfileIcon,
- authorIsMe: state.feedBlogPostList[widget.index].author.authorIsMe,
- ),
- );
- },
- child: Row(
- children: [
- CircleAvatar(
- radius: 20,
- backgroundColor: Colors.black12,
- foregroundImage: NetworkImage(
- baseUrl + state.feedBlogPostList[widget.index].author.authorProfileIcon,
- ),
- backgroundImage: const AssetImage('assets/images/no_avatar.png'),
- ),
- const SizedBox(width: 8),
- Column(
- crossAxisAlignment: CrossAxisAlignment.start,
- children: [
- Text(
- state.feedBlogPostList[widget.index].author.authorName,
- style: const TextStyle(
- height: 1,
- color: Colors.black87,
- fontWeight: FontWeight.w500,
- fontSize: 16,
- ),
- ),
- const SizedBox(height: 4),
- Text(
- '${calculateDifference(state.feedBlogPostList[widget.index].createdAt)} в ${state.feedBlogPostList[widget.index].createdAt.hour.toString().padLeft(2, '0')}:${state.feedBlogPostList[widget.index].createdAt.minute.toString().padLeft(2, '0')}',
- style: const TextStyle(
- height: 1,
- color: Colors.black45,
- fontSize: 14,
- ),
- ),
- ],
- ),
- ],
- ),
- ),
- const Spacer(),
- if (!(state.feedBlogPostList[widget.index].author.isEntitySubscribedByMe ?? false) &&
- !state.feedBlogPostList[widget.index].author.authorIsMe)
- Padding(
- padding: const EdgeInsets.only(right: 8),
- child: SubscribeButtonWidget(
- slug: state.feedBlogPostList[widget.index].author.authorSlug,
+ Padding(
+ padding: const EdgeInsets.symmetric(horizontal: 12),
+ child: Row(
+ crossAxisAlignment: CrossAxisAlignment.start,
+ children: [
+ GestureDetector(
+ onTap: () {
+ GoRouter.of(context).pushNamed(
+ 'profileScreen',
+ extra: Author(
+ authorSlug: state.feedBlogPostList[widget.index].author.authorSlug,
+ authorName: state.feedBlogPostList[widget.index].author.authorName,
+ authorProfileIcon: state.feedBlogPostList[widget.index].author.authorProfileIcon,
+ authorIsMe: state.feedBlogPostList[widget.index].author.authorIsMe,
),
+ );
+ },
+ child: CircleAvatar(
+ radius: 20,
+ backgroundColor: Colors.black12,
+ foregroundImage: NetworkImage(
+ baseUrl + state.feedBlogPostList[widget.index].author.authorProfileIcon,
),
- CustomPopup(
- isAuthor: state.feedBlogPostList[widget.index].author.authorIsMe,
- complainedContentType: ComplainedContent.posts,
- path: 'blog_post/${(state.feedBlogPostList[widget.index].id)}',
- id: state.feedBlogPostList[widget.index].id,
- feedBlogPostModel: state.feedBlogPostList[widget.index],
+ backgroundImage: const AssetImage('assets/images/no_avatar.png'),
),
- ],
- ),
+ ),
+ const SizedBox(width: 8),
+ // Имя и дата внутри Expanded
+ Expanded(
+ child: Column(
+ crossAxisAlignment: CrossAxisAlignment.start,
+ children: [
+ Text(
+ state.feedBlogPostList[widget.index].author.authorName,
+ overflow: TextOverflow.ellipsis,
+ style: const TextStyle(
+ height: 1,
+ color: Colors.black87,
+ fontWeight: FontWeight.w500,
+ fontSize: 16,
+ ),
+ ),
+ const SizedBox(height: 4),
+ Text(
+ '${calculateDifference(state.feedBlogPostList[widget.index].createdAt)} в ${state.feedBlogPostList[widget.index].createdAt.hour.toString().padLeft(2, '0')}:${state.feedBlogPostList[widget.index].createdAt.minute.toString().padLeft(2, '0')}',
+ style: const TextStyle(
+ height: 1,
+ color: Colors.black45,
+ fontSize: 14,
+ ),
+ ),
+ ],
+ ),
+ ),
+ // Кнопка подписки (если нужно)
+ if (!(state.feedBlogPostList[widget.index].author.isEntitySubscribedByMe ?? false) &&
+ !state.feedBlogPostList[widget.index].author.authorIsMe)
+ Padding(
+ padding: const EdgeInsets.only(right: 8),
+ child: SubscribeButtonWidget(
+ slug: state.feedBlogPostList[widget.index].author.authorSlug,
+ ),
+ ),
+ // Кнопка меню
+ CustomPopup(
+ isAuthor: state.feedBlogPostList[widget.index].author.authorIsMe,
+ complainedContentType: ComplainedContent.posts,
+ path: 'blog_post/${(state.feedBlogPostList[widget.index].id)}',
+ id: state.feedBlogPostList[widget.index].id,
+ feedBlogPostModel: state.feedBlogPostList[widget.index],
+ ),
+ ],
),
- if (state.feedBlogPostList[widget.index].title.isNotEmpty || state.feedBlogPostList[widget.index].description.isNotEmpty)
+ ),
+ if (state.feedBlogPostList[widget.index].title.isNotEmpty) ...[
const SizedBox(height: 12),
- Padding(
- padding: const EdgeInsets.symmetric(horizontal: 12),
- child: Text(
- state.feedBlogPostList[widget.index].title,
- style: const TextStyle(
- fontSize: 18,
- fontWeight: FontWeight.w600,
- color: Colors.black87,
+ Padding(
+ padding: const EdgeInsets.symmetric(horizontal: 12),
+ child: Text(
+ state.feedBlogPostList[widget.index].title,
+ style: const TextStyle(
+ fontSize: 18,
+ fontWeight: FontWeight.w600,
+ color: Colors.black87,
+ ),
),
),
- ),
+ ],
+ if (state.feedBlogPostList[widget.index].title.isEmpty) const SizedBox(height: 8),
if (state.feedBlogPostList[widget.index].title.isNotEmpty && state.feedBlogPostList[widget.index].description.isNotEmpty)
const SizedBox(height: 8),
if (state.feedBlogPostList[widget.index].description.isNotEmpty)
diff --git a/lib/features/feed/presentation/widgets/blog_posts.dart b/lib/features/feed/presentation/widgets/blog_posts.dart
index 76c89a7e..8c918515 100644
--- a/lib/features/feed/presentation/widgets/blog_posts.dart
+++ b/lib/features/feed/presentation/widgets/blog_posts.dart
@@ -24,7 +24,6 @@ class BlogPosts extends StatelessWidget {
},
child: ListView.separated(
padding: const EdgeInsets.symmetric(vertical: 8),
- shrinkWrap: true,
physics: const BouncingScrollPhysics(),
itemBuilder: (context, index) {
if (index == state.feedBlogPostList.length) {
@@ -32,9 +31,7 @@ class BlogPosts extends StatelessWidget {
}
return BlogPostWidget(index: index);
},
- separatorBuilder: (context, index) {
- return const SizedBox(height: 8);
- },
+ separatorBuilder: (context, index) => const SizedBox(height: 8),
itemCount: state.isLoading ? state.feedBlogPostList.length + 1 : state.feedBlogPostList.length,
),
);
@@ -53,3 +50,4 @@ class BlogPosts extends StatelessWidget {
);
}
}
+