【问题标题】:Custom container shape in flutter颤动中的自定义容器形状
【发布时间】:2020-11-10 11:22:35
【问题描述】:

我想在 Flutter 中制作这样的屏幕:

谁能建议我如何在 Flutter 中制作这样的容器并进行这样的设计, 提前致谢。

【问题讨论】:

标签: flutter flutter-layout flutter-design


【解决方案1】:

您可以使用ClipPath 类为您的容器提供自定义形状。

import 'package:flutter/material.dart';

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        body: Center(
          child: ClipPath(
            child: Container(color: Colors.red),
            clipper: MyCustomClipper(),
          ),
        ),
      ));
  }
}

class MyCustomClipper extends CustomClipper<Path> {
  @override
  Path getClip(Size size) {
    Path path = Path()
        ..lineTo(size.width, 0)
        ..lineTo(size.width, size.height/2)
        ..lineTo(size.width/2, size.height)
        ..lineTo(0, size.height)
        ..close();
      
    return path;
  }

  @override
  bool shouldReclip(CustomClipper<Path> oldClipper) => false;
}

【讨论】:

  • ClipPath 不是为Container 提供自定义形状的最佳解决方案 - 为此使用ShapeDecorationhere 你有一些示例代码
  • @pskink 你能帮我创建一个这样的例子吗?
  • @pskink 我是 Flutter 新手,你能解释一下为什么在这种情况下 ShapeDecoration 更好吗?
  • 您可以应用阴影,例如,执行测试命中,但在实现 lerp* 方法时,您可以像这里一样拥有“变形”形状:github.com/flutter/flutter/blob/c969b8af7b/packages/flutter/lib/…,这种“变形”可以应用于其他 @ 987654330@s 以及 - 检查 CornerDecorationTestgist.github.com/pskink/… - 只需点击其中的 CornerDecorationTest 并观看魔术 ;-)
  • @pskink 哦,好吧,所以如果你想要比 OP 更多的功能,一般来说它会更好。我曾假设当您说“更好”时,在这种特定情况下您的意思是更好,可能是更有效的重绘或不那么复杂或类似的东西。
猜你喜欢
  • 1970-01-01
  • 2022-07-27
  • 1970-01-01
  • 1970-01-01
  • 2021-09-16
  • 1970-01-01
  • 1970-01-01
  • 2018-09-13
  • 2021-02-08
相关资源
最近更新 更多