Optimization _buildBriefMode (#51)

更改_buildBriefMode样式
This commit is contained in:
AnxuNA
2024-11-17 22:55:04 +08:00
committed by GitHub
parent a1d1f504bd
commit 036474a5d2

View File

@@ -225,85 +225,99 @@ class ComicTile extends StatelessWidget {
} }
Widget _buildBriefMode(BuildContext context) { Widget _buildBriefMode(BuildContext context) {
return LayoutBuilder( return Padding(
builder: (context, constraints) { padding: const EdgeInsets.symmetric(horizontal: 6, vertical: 8),
return InkWell( child: LayoutBuilder(
borderRadius: BorderRadius.circular(12), builder: (context, constraints) {
onTap: _onTap, return InkWell(
onLongPress: enableLongPressed ? () => onLongPress(context) : null, borderRadius: BorderRadius.circular(8),
onSecondaryTapDown: (detail) => onSecondaryTap(detail, context), onTap: _onTap,
child: Padding( onLongPress:
padding: const EdgeInsets.fromLTRB(8, 8, 8, 8), enableLongPressed ? () => onLongPress(context) : null,
child: Column( onSecondaryTapDown: (detail) => onSecondaryTap(detail, context),
children: [ child: Column(
Expanded( children: [
// Wrap the Container with Expanded Expanded(
child: SizedBox( child: SizedBox(
width: constraints.maxWidth, child: Stack(
height: constraints.maxHeight, children: [
child: Stack( Positioned.fill(
children: [
Positioned.fill(
child: Container(
decoration: BoxDecoration(
color: Theme.of(context)
.colorScheme
.secondaryContainer,
borderRadius: BorderRadius.circular(8),
),
clipBehavior: Clip.antiAlias,
child: buildImage(context),
),
),
Positioned(
bottom: 0,
right: 0,
child: ClipRRect(
borderRadius: const BorderRadius.only(
topLeft: Radius.circular(10.0),
topRight: Radius.circular(10.0),
),
child: Container( child: Container(
color: Colors.black.withOpacity(0.5), // 半透明黑色背景 decoration: BoxDecoration(
child: Padding( color: Theme.of(context)
padding: const EdgeInsets.fromLTRB(8, 4, 8, 4), .colorScheme
child: Text( .secondaryContainer,
comic.description.replaceAll("\n", ""), borderRadius: BorderRadius.circular(8),
style: const TextStyle(
fontWeight: FontWeight.w500,
fontSize: 12,
color: Colors.white,
),
maxLines: 1,
overflow: TextOverflow.ellipsis,
),
), ),
clipBehavior: Clip.antiAlias,
child: buildImage(context),
), ),
), ),
), Positioned(
], bottom: 0,
right: 0,
child: Padding(
padding: const EdgeInsets.symmetric(
horizontal: 4, vertical: 4),
child: ClipRRect(
borderRadius: const BorderRadius.only(
topLeft: Radius.circular(10.0),
topRight: Radius.circular(10.0),
bottomRight: Radius.circular(10.0),
bottomLeft: Radius.circular(10.0),
),
child: Container(
color: Colors.black.withOpacity(0.5),
child: Padding(
padding:
const EdgeInsets.fromLTRB(8, 6, 8, 6),
child: ConstrainedBox(
constraints: BoxConstraints(
maxWidth: constraints.maxWidth * 0.88,
),
child: Text(
comic.description.isEmpty
? comic.subtitle
?.replaceAll('\n', '') ??
''
: comic.description
.split('|')
.join('\n'),
style: const TextStyle(
fontWeight: FontWeight.w500,
fontSize: 12,
color: Colors.white,
),
textAlign: TextAlign.right,
maxLines: 2,
overflow: TextOverflow.ellipsis,
),
),
),
),
),
)),
],
),
), ),
), ),
), Padding(
Padding( padding: const EdgeInsets.fromLTRB(8, 4, 8, 0),
padding: const EdgeInsets.fromLTRB(8, 4, 8, 0), child: Text(
child: Text( comic.title.replaceAll('\n', ''),
comic.title.replaceAll("\n", ""), style: const TextStyle(
style: const TextStyle( fontWeight: FontWeight.w500,
fontWeight: FontWeight.w500, fontSize: 14.0,
fontSize: 14.0, ),
color: Colors.white, maxLines: 1,
overflow: TextOverflow.ellipsis,
), ),
maxLines: 1,
overflow: TextOverflow.ellipsis,
), ),
), ],
], ),
), );
), },
); ));
},
);
} }
void block(BuildContext comicTileContext) { void block(BuildContext comicTileContext) {