FLUTTER ECOSYSTEM

leancodepl/dashed_line

원하는 모양과 스타일로 점선을 그립니다. 그냥 그렇게요.

점선 프로젝트 이미지
Stars
25
Forks
4
최근 푸시(UTC)
2023. 12. 1.
프로젝트 상태
활성
LeanCode GitHub avatar
GITHUB Organization

LeanCode ↗

We're a custom software studio that delivers end-to-end solutions for various industries. Experts in Flutter, .NET, and React.

언어DartSwiftKotlinObjective-C

기술 주제

이 저장소가 배포한 패키지

사용 중인 의존성

의존성 목록 4 개
  • flutter{"sdk":"flutter"}
  • svg_path_parser^1.0.0
  • flutter_test개발 의존성{"sdk":"flutter"}
  • lint개발 의존성^1.5.3

원본 README

아래는 영문 원문 스냅샷입니다. 최신 내용은 GitHub에서 확인하세요.

README 펼치기 / 접기

dashed_line

pub.dev build status

https://raw.githubusercontent.com/leancodepl/dashed_line/main/art/underheader.png

Draw dashed lines with any shape and style you want. Just like that.

Usage

Add the dependency to your pubspec.yaml (you can see the newest version in the pub badge):

dependencies:
  dashed_line: ^0.1.0

Use the widget:

import 'package:dashed_line/dashed_line.dart';

// ...

DashedLine(
  path: Path()..cubicTo(-40, 53, 14, 86, 61, 102),
  color: Colors.red,
)

...you can also use the SVG path commands instead of a Path:

DashedLine.svgPath(
  'C -40 53 14 86 61 102',
  color: Colors.red,
)

Where to obtain path methods/commands?

There are many ways.

You can construct the path yourself using the Path methods like lineTo or cubicTo.

You can also use the path commands used in the d attribute of SVG files. You can do this manually or via export from one of the vector graphics software, like Inkscape or Figma. We found SvgPathEditor quite useful too.

Example: Exporting path commands from Figma
First step Second step
Create path using pen Export path as SVG

And now we have an SVG in the clipboard:

<svg width="190" height="48" viewBox="0 0 190 48" fill="none" xmlns="http://www.w3.org/2000/svg">
  <path d="M1 16C73 79 100 3 121 0.999997C142 -1 214.5 11.5 179 47" stroke="black"/>
</svg>

From here we can just copy the value of the path's d attribute and use for the DashedLine.svgPath constructor's first argument.

🚨 Note about paths

Due to how Paths work in Flutter and Skia, the DashedLine widget takes NOT as much space as the dashed line needs, but as much it needs to contain all the control points. Table below should help understand the problem.

Path commands Path Result line
C 8 63 14 86 61 102 https://raw.githubusercontent.com/leancodepl/dashed_line/main/art/path-inside-bbox.png https://raw.githubusercontent.com/leancodepl/dashed_line/main/art/path-inside-bbox-result.png
C -40 53 14 86 61 102 https://raw.githubusercontent.com/leancodepl/dashed_line/main/art/path-outside-bbox.png https://raw.githubusercontent.com/leancodepl/dashed_line/main/art/path-outside-bbox-result.png

License

See LICENSE.