使用 SVG 作为容器的背景图像

S.D*_*.D. 17 dart flutter

这个问题,我使用 Flutter 的 SVG 包 ( flutter_svg) 来渲染SVG 图像

我想使用 SVG 作为中间的Container背景Text

带有背景图像的容器示例

这是我到目前为止的代码:

Container(
      decoration: BoxDecoration(
          image: DecorationImage(image: SvgPicture.asset(
            'assets/example.svg',
          ),),
      ),
      children: <Widget>[
        Text('Welcome to my Flutter App',
          style: Theme.of(context).textTheme.display1.copyWith(
            color: Colors.white,
            fontWeight: FontWeight.bold
          )
        ),
      ],
    )
Run Code Online (Sandbox Code Playgroud)

我发现的问题是这SvgPicture不是一个,ImageProvider所以我无法添加BoxDecoration来获取背景图像。

有没有办法然后SvgPicture用作容器的盒子装饰或背景?

car*_*sx2 13

如何使用 stack() 并在其上构建所有内容。这就是我只用一张图像作为完整视口背景的方法。

  • 简单的例子会更有用:) (9认同)
  • 如何使用堆栈布局来实现这一点?找不到按照这篇文章所说的方法。 (3认同)

小智 12

使用 SvgPicture 的确切方法是这样的:

Widget build(BuildContext context) {

  return Scaffold(
    body: Stack(
      children: <Widget>[
        SvgPicture.asset(
          'assets/images/splash/background.svg',
          alignment: Alignment.center,
          width: MediaQuery.of(context).size.width,
          height: MediaQuery.of(context).size.height,
        ),
        Container(
          child: Column(
            children: <Widget>[Expanded(child: _createLogo())],
          ),
        ),
      ],
    ),
  );
}
Run Code Online (Sandbox Code Playgroud)


小智 11

您还可以使用flutter_svg_provider

像这样 :

import 'package:flutter_svg_provider/flutter_svg_provider.dart';

Container(
      decoration: BoxDecoration(
          image: DecorationImage(image: Svg(
            'assets/example.svg',
          ),),
      ),
    )
Run Code Online (Sandbox Code Playgroud)

  • 最新版本的 flutter_svg_provider (目前为 0.1.9)确实支持这一点。这个答案是正确的。 (8认同)
  • 不起作用!参数类型“Svg”无法分配给参数类型“ImageProvider&lt;Object&gt;”。 (4认同)
  • 经过充分测试,它可以在 2022 年运行 (3认同)
  • @Davencode这是因为你使用的是 flutter_svg 而不是 flutter_svg_provider 包 (2认同)