gpt4 book ai didi

flutter - 在模糊图像上的渐变( flutter )

转载 作者:行者123 更新时间:2023-12-03 04:37:26 28 4
gpt4 key购买 nike

我想要一种像背景截图那样的第二张截图中的那种设计。因此,模糊背景图像的上半部分已经很好,只有下半部分缺少固定颜色的渐变(例如黑色或白色)。
为了澄清起见:我只希望背景淡化为黑色而不影响顶层(在这种情况下为未触摸的图像)。我已经尝试了很长时间才能找到合适的解决方案,但不幸的是我没有找到任何解决方案。
当前状态:
current state
目标:
goal
当前代码(第一个屏幕截图):

Container(
color: Colors.white,
child: Container(
decoration: BoxDecoration(
image: DecorationImage(
image: CachedNetworkImageProvider(widget.storyData.coverURL),
fit: BoxFit.cover,
),
),
child: BackdropFilter(
filter: ImageFilter.blur(sigmaX: 30, sigmaY: 30),
child: Container(
child: Padding(
padding: const EdgeInsets.all(80.0),
child: Hero(
tag: widget.heroTagID,
child: CachedNetworkImage(
imageUrl: widget.storyData.coverURL,
placeholder: (context, url) => Padding(
padding: EdgeInsets.all(25),
child: Icon(Ionicons.image_outline),
),
),
),
),
),
)),
);

最佳答案

您可以使用StackLinearGradient来实现。
我已经用简单的NetworkImage替换了CachedNetworkImageProvider,以便代码可以在https://dartpad.dev/上工作。原理保持不变:

import 'dart:ui';
import 'package:flutter/material.dart';

final Color darkBlue = Color.fromARGB(255, 18, 32, 47);

void main() {
runApp(MyApp());
}

class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
theme: ThemeData.dark().copyWith(scaffoldBackgroundColor: darkBlue),
debugShowCheckedModeBanner: false,
home: Scaffold(
body: Center(
child: MyWidget(),
),
),
);
}
}

class MyWidget extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Stack(
children: <Widget>[
Container(
decoration: BoxDecoration(
image: DecorationImage(
image: NetworkImage(
'https://picsum.photos/id/255/1440/3200',
),
fit: BoxFit.cover,
),
),
),
Container(
constraints: BoxConstraints.expand(),
decoration: BoxDecoration(
color: Colors.white,
gradient: LinearGradient(
begin: FractionalOffset.topCenter,
end: FractionalOffset.bottomCenter,
colors: [Colors.black.withOpacity(0.0), Colors.black],
stops: [0.0, 1.0]
)
),
),
BackdropFilter(
filter: ImageFilter.blur(sigmaX: 5, sigmaY: 5),
child: Center(
child: Padding(
padding: const EdgeInsets.all(80.0),
child: Hero(
tag: 'heroTag',
child: Image.network(
'https://picsum.photos/id/255/1440/3200',
)
),
),
)
),
],
);
}
}
您可以调整颜色,然后停下来以得到您想要的颜色。
最终结果:
end_result_image

关于flutter - 在模糊图像上的渐变( flutter ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63864390/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com