我想为我的 Flutter 应用程序中的每个页面使用背景图像。因此,我想要一个类,我可以用它来返回一个 BoxDecoration 以从我创建的每个新页面调用它。目前,我正在使用一个简单的全局函数backgroundImage(),它返回一个BoxDecoration. 有没有办法让我可以直接传递给自定义类decoration:而不是调用全局函数?
BoxDecoration backgroundImage() {
return BoxDecoration(
image: DecorationImage(
image: AssetImage("images/background.png"),
fit: BoxFit.cover,
),
);
}
Run Code Online (Sandbox Code Playgroud)
class HomeScreen extends StatelessWidget{
@override
Widget build(BuildContext context) {
return Scaffold(
body: Container(
decoration: backgroundImage(),
child: null /* add child content here */,
),
);
}
}
Run Code Online (Sandbox Code Playgroud)
在我看来,您想要的是一个可以导入和重用的变量。创建一个新类,在其中您只会返回一个带有一些自定义选项的 BoxDecoration 实例可能有点过头了。为什么不创建一个单独的文件,导入材料,用您的自定义声明一个变量并使用它?像这个例子:
自定义装饰文件重用:
import 'package:flutter/material.dart';
BoxDecoration baseBackgroundDecoration =
BoxDecoration(
image: DecorationImage(
image: AssetImage("images/background.png"),
fit: BoxFit.cover,
),
);
Run Code Online (Sandbox Code Playgroud)
使用它:
import 'custom_decorations.dart';
Run Code Online (Sandbox Code Playgroud)
使用变量:
Container(
decoration: baseBackgroundDecoration,
),
Run Code Online (Sandbox Code Playgroud)
不过,你最初的想法并没有错。您不会将它用作全局变量,而只是在需要时导入的文件,其中包含一个带有自定义装饰的类,如下所示:
import 'package:flutter/material.dart';
class CustomDecorations {
BoxDecoration baseBackgroundDecoration(){
return BoxDecoration(
image: DecorationImage(
image: AssetImage("images/background.png"),
fit: BoxFit.cover,
),
);
}
}
Run Code Online (Sandbox Code Playgroud)
然后您可以通过以下方式之一使用它:
Container(
decoration: CustomDecorations().baseBackgroundDecoration(),
),
Run Code Online (Sandbox Code Playgroud)
或者:
// Declare it
CustomDecorations customDecorations = CustomDecorations();
...
// Use it
Container(
decoration: customDecorations.baseBackgroundDecoration(),
),
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
696 次 |
| 最近记录: |