- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试自定义我的容器形状,使其看起来像这样:
我试着用 customPaint 来做,但我不太了解这个小部件,所以我需要帮助。
我怎样才能画出这样的形状? customPaint 是正确的解决方案吗?
最佳答案
您可以在下面复制粘贴运行完整代码
包的修改代码 https://pub.dev/packages/flutter_custom_clippers的StarClipper
https://github.com/lohanidamodar/flutter_custom_clippers/blob/master/lib/src/star_clipper.dart
代码 fragment
class StarClipper extends CustomClipper<Path>
@override
Path getClip(Size size) {
...
double radius = halfWidth / 1.3;
...
Container(
height: 200,
width: 200,
child: ClipPath(
clipper: StarClipper(14),
child: Container(
height: 150,
color: Colors.green[500],
child: Center(child: Text("+6", style: TextStyle(fontSize: 50),)),
),
),
),
工作演示
完整代码
import 'package:flutter/material.dart';
import 'dart:math' as math;
class StarClipper extends CustomClipper<Path> {
StarClipper(this.numberOfPoints);
/// The number of points of the star
final int numberOfPoints;
@override
Path getClip(Size size) {
double width = size.width;
print(width);
double halfWidth = width / 2;
double bigRadius = halfWidth;
double radius = halfWidth / 1.3;
double degreesPerStep = _degToRad(360 / numberOfPoints);
double halfDegreesPerStep = degreesPerStep / 2;
var path = Path();
double max = 2 * math.pi;
path.moveTo(width, halfWidth);
for (double step = 0; step < max; step += degreesPerStep) {
path.lineTo(halfWidth + bigRadius * math.cos(step),
halfWidth + bigRadius * math.sin(step));
path.lineTo(halfWidth + radius * math.cos(step + halfDegreesPerStep),
halfWidth + radius * math.sin(step + halfDegreesPerStep));
}
path.close();
return path;
}
num _degToRad(num deg) => deg * (math.pi / 180.0);
@override
bool shouldReclip(CustomClipper<Path> oldClipper) {
StarClipper oldie = oldClipper as StarClipper;
return numberOfPoints != oldie.numberOfPoints;
}
}
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
visualDensity: VisualDensity.adaptivePlatformDensity,
),
home: MyHomePage(title: 'Flutter Demo Home Page'),
);
}
}
class MyHomePage extends StatefulWidget {
MyHomePage({Key key, this.title}) : super(key: key);
final String title;
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
int _counter = 0;
void _incrementCounter() {
setState(() {
_counter++;
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(widget.title),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Container(
height: 200,
width: 200,
child: ClipPath(
clipper: StarClipper(14),
child: Container(
height: 150,
color: Colors.green[500],
child: Center(child: Text("+6", style: TextStyle(fontSize: 50),)),
),
),
),
],
),
),
floatingActionButton: FloatingActionButton(
onPressed: _incrementCounter,
tooltip: 'Increment',
child: Icon(Icons.add),
),
);
}
}
关于android - Flutter:如何画星星,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63700728/
在 ggplot 中,我想用星号 ('*') 标记一些误差条以指示显着性水平。该图在 y 轴上排列有类别标签,因此它们很容易辨认。这意味着误差条是水平的,* 需要与它们垂直对齐。但是,符号“*”并未在
很难说出这里问的是什么。这个问题是含糊的、模糊的、不完整的、过于宽泛的或修辞性的,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开它,visit the help center 。 已关
我正在研究在图像上模拟星星。该图像是按正态分布(均值、标准差)生成的灰度矩阵。现在,给定像素坐标和恒星 SNR,我必须将其作为点源种植在图像之上。有什么建议我如何实现它以使其成为有用的模拟?你能建议代
我正在尝试自定义 RatingBar 的每颗星,使其看起来不同。 当我查看它的源代码时 RatingBar或其父类(super class) AbsSeekBar/ProgressBar ,我无法识别
我想给 RatingBar 中的星星添加阴影。我也想用半星,所以我不能直接在星图上添加阴影。这有可能实现还是我必须创建自定义 RatingBar? 我使用以下可绘制对象使未填充的星星透明:
我正在尝试绘制一些随机点作为窗口中的星星,但积分没有显示。但其他对象显示正确。 我的源代码: #include #include #include // For math routine
GitHub API 提供了获取按创建日期排序的加星标项目的功能。但是,我找不到获得这个日期的可能性。 响应中仅存在三个日期类型字段: created_at: '2013-06-13T21:10:36
我制作了一些闪烁的随机星星粒子,由于某种原因它无法在 Firefox 上运行,我可以渲染出我的图像,但星星没有渲染。我也没有错误消息。 我把它发送给一个 friend ,由于某种原因,它在他的 chr
我是一名优秀的程序员,十分优秀!