From 9efc982b1535b47b53b3734ba63ee00d7bdf2bc7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E5=AD=90=E8=B4=A4?= Date: Tue, 6 Jan 2026 18:03:30 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E5=B9=BF=E5=9C=BA=E5=8A=9F?= =?UTF-8?q?=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/pages/home/send_timeline.dart | 54 ++++++++++++++++++++++- lib/pages/home/timeline_info.dart | 50 +++++++++++++++++++++ lib/pages/home/timeline_item.dart | 49 +++++++++++++++++++- lib/pages/home/timeline_page.dart | 10 ++++- lib/pages/home/timeline_window.dart | 2 +- lib/pages/home/user_information_page.dart | 6 ++- 6 files changed, 164 insertions(+), 7 deletions(-) diff --git a/lib/pages/home/send_timeline.dart b/lib/pages/home/send_timeline.dart index 53d1a33..2549b0d 100644 --- a/lib/pages/home/send_timeline.dart +++ b/lib/pages/home/send_timeline.dart @@ -236,7 +236,7 @@ class _SendTimelineState extends State { final ImagePicker picker = ImagePicker(); final List? image = await picker.pickMultiImage(limit: 9 - imgList.length); - if (image != null) { + if (image != null && image.isNotEmpty) { final futures = image.map((e){ return processSelectedMoreImage(File(e.path)); }); @@ -529,6 +529,23 @@ class _SendTimelineState extends State { width: 341.w, height: 341.w, fit: BoxFit.cover, + + + imageBuilder: (context, imageProvider) => Container( + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(8), + image: DecorationImage( + image: imageProvider, + fit: BoxFit.cover, + ), + ), + ), + errorWidget: (context, url, error) => Image.asset( + Assets.imagesUserAvatar, + width: 341.w, + height: 341.w, + fit: BoxFit.cover, + ), ), Positioned( left: 5.w, @@ -543,6 +560,7 @@ class _SendTimelineState extends State { child: Icon( Icons.close, size: 20.w, + color: Colors.white, ), ).onTap((){ imgList.clear(); @@ -564,6 +582,23 @@ class _SendTimelineState extends State { width: 165.w, height: 165.w, fit: BoxFit.cover, + + + imageBuilder: (context, imageProvider) => Container( + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(8), + image: DecorationImage( + image: imageProvider, + fit: BoxFit.cover, + ), + ), + ), + errorWidget: (context, url, error) => Image.asset( + Assets.imagesUserAvatar, + width: 165.w, + height: 165.w, + fit: BoxFit.cover, + ), ), Positioned( left: 5.w, @@ -603,6 +638,23 @@ class _SendTimelineState extends State { width: 105.w, height: 105.w, fit: BoxFit.cover, + + + imageBuilder: (context, imageProvider) => Container( + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(8), + image: DecorationImage( + image: imageProvider, + fit: BoxFit.cover, + ), + ), + ), + errorWidget: (context, url, error) => Image.asset( + Assets.imagesUserAvatar, + width: 105.w, + height: 105.w, + fit: BoxFit.cover, + ), ), Positioned( left: 5.w, diff --git a/lib/pages/home/timeline_info.dart b/lib/pages/home/timeline_info.dart index 6e5ce8d..ce132c3 100644 --- a/lib/pages/home/timeline_info.dart +++ b/lib/pages/home/timeline_info.dart @@ -185,6 +185,23 @@ class TimelineInfo extends StatelessWidget { width: 341.w, height: 341.w, fit: BoxFit.cover, + + + imageBuilder: (context, imageProvider) => Container( + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(8), + image: DecorationImage( + image: imageProvider, + fit: BoxFit.cover, + ), + ), + ), + errorWidget: (context, url, error) => Image.asset( + Assets.imagesUserAvatar, + width: 341.w, + height: 341.w, + fit: BoxFit.cover, + ), ), if(controller.imgList.length == 2) Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, @@ -195,6 +212,23 @@ class TimelineInfo extends StatelessWidget { width: 165.w, height: 165.w, fit: BoxFit.cover, + + + imageBuilder: (context, imageProvider) => Container( + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(8), + image: DecorationImage( + image: imageProvider, + fit: BoxFit.cover, + ), + ), + ), + errorWidget: (context, url, error) => Image.asset( + Assets.imagesUserAvatar, + width: 165.w, + height: 165.w, + fit: BoxFit.cover, + ), ); }), ], @@ -209,6 +243,22 @@ class TimelineInfo extends StatelessWidget { width: 105.w, height: 105.w, fit: BoxFit.cover, + + imageBuilder: (context, imageProvider) => Container( + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(8), + image: DecorationImage( + image: imageProvider, + fit: BoxFit.cover, + ), + ), + ), + errorWidget: (context, url, error) => Image.asset( + Assets.imagesUserAvatar, + width: 105.w, + height: 105.w, + fit: BoxFit.cover, + ), ); }), ], diff --git a/lib/pages/home/timeline_item.dart b/lib/pages/home/timeline_item.dart index ec98232..cb58515 100644 --- a/lib/pages/home/timeline_item.dart +++ b/lib/pages/home/timeline_item.dart @@ -223,6 +223,22 @@ class _TimelineItemState extends State { width: 341.w, height: 341.w, fit: BoxFit.cover, + + imageBuilder: (context, imageProvider) => Container( + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(8), + image: DecorationImage( + image: imageProvider, + fit: BoxFit.cover, + ), + ), + ), + errorWidget: (context, url, error) => Image.asset( + Assets.imagesUserAvatar, + width: 341.w, + height: 341.w, + fit: BoxFit.cover, + ), ), if(imgList.length == 2) Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, @@ -233,6 +249,22 @@ class _TimelineItemState extends State { width: 165.w, height: 165.w, fit: BoxFit.cover, + + imageBuilder: (context, imageProvider) => Container( + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(8), + image: DecorationImage( + image: imageProvider, + fit: BoxFit.cover, + ), + ), + ), + errorWidget: (context, url, error) => Image.asset( + Assets.imagesUserAvatar, + width: 165.w, + height: 165.w, + fit: BoxFit.cover, + ), ); }), ], @@ -247,6 +279,22 @@ class _TimelineItemState extends State { width: 105.w, height: 105.w, fit: BoxFit.cover, + + imageBuilder: (context, imageProvider) => Container( + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(8), + image: DecorationImage( + image: imageProvider, + fit: BoxFit.cover, + ), + ), + ), + errorWidget: (context, url, error) => Image.asset( + Assets.imagesUserAvatar, + width: 105.w, + height: 105.w, + fit: BoxFit.cover, + ), ); }), ], @@ -298,7 +346,6 @@ class _TimelineItemState extends State { ), ).onTap((){ Get.to(() => TimelineInfo(id: widget.item.id ?? "",))?.then((e){ - print(12121212121212); widget.item.likeCount = e.likeCount; widget.item.isLiked = e.isLiked; widget.item.commentCount = e.commentCount; diff --git a/lib/pages/home/timeline_page.dart b/lib/pages/home/timeline_page.dart index 83d9f42..53b9a56 100644 --- a/lib/pages/home/timeline_page.dart +++ b/lib/pages/home/timeline_page.dart @@ -37,6 +37,11 @@ class _TimelinePageState extends State builder: (controller) { return Stack( children: [ + Positioned.fill( + child: Container( + color: Colors.white, + ), + ), // 背景图 - 覆盖整个屏幕包括状态栏和导航栏 Image.asset( Assets.imagesBgInformation, @@ -53,11 +58,12 @@ class _TimelinePageState extends State // 使用 IndexedStack 保持两个列表的状态,根据当前选中的标签显示对应的列表 return IndexedStack( index: controller.topTab.value, - children: const [ + children: [ // // 推荐列表 // RecommendWindow(), // 同城列表 - TimelineWindow(), + const TimelineWindow(), + Container() ], ); }), diff --git a/lib/pages/home/timeline_window.dart b/lib/pages/home/timeline_window.dart index 7cd89b2..6bdf974 100644 --- a/lib/pages/home/timeline_window.dart +++ b/lib/pages/home/timeline_window.dart @@ -21,7 +21,7 @@ class _TimelineWindowState extends State with AutomaticKeepAlive @override void initState() { super.initState(); - + print(111); tabController = TabController(length: 2, vsync: this); } diff --git a/lib/pages/home/user_information_page.dart b/lib/pages/home/user_information_page.dart index 0aa36f4..7d41bcb 100644 --- a/lib/pages/home/user_information_page.dart +++ b/lib/pages/home/user_information_page.dart @@ -102,7 +102,7 @@ class UserInformationPage extends StatelessWidget { ), Positioned( left: 120.w, - top: 310.w, + top: miId != GlobalData().userData!.id ? 290.w : 310.w, width: 240.w, child: SingleChildScrollView( scrollDirection: Axis.horizontal, @@ -195,7 +195,9 @@ class UserInformationPage extends StatelessWidget { children: [ Container( width: 375.w, - height: 812.h, + constraints: BoxConstraints( + minHeight: 812.h, + ), padding: EdgeInsets.only( top: 31.w, left: 15.w,