Flutter에서 Widget이 Material Design 설명서에 따라 구성되었는지 확인하는 방법
개시하다
Flutter로 개발하면 대부분 Material Components
package:flutter/material.dart
를 사용한다고 생각합니다.Components - Material Design
어차피 부품(이하 부품이라고 함)의 구성도 머티리얼 디자인 가이드라인(부품과 8dp 간격의 격자를 맞추는 것)에 따르면 예뻐 보이고 쉽게 볼 수 있다.
Spacing methods - Material Design
그러나 Flutter 표준 디버깅 기능
Show debug paint
에서는 애플릿이'8dp 간격의 격자'(이하 격자)를 따라가는지 확인할 수 없다.좋은 방법이 있나요?이렇게 혼잣말을 할 때 다음과 같은 조언을 받았다.
똑똑하다!그래서 우리는 격자를 그리는 데 사용되는 일반적인 Widget을 만들었다.
또 제작된 부품은 포장해 이곳에 공개했다.
material_spacing_checker | Flutter Package
본고는 격자를 그리는 작은 위젯을 만드는 방법을 소개했다.
메서드
방법상 다음과 같은 절차를 채택하다.
CustomPaint
를 사용하여 메쉬 그리기Stack
를 사용하여 메쉬CustomPaint
와 기타 Widget을 중첩설치 방법
우선 화면의 사이즈는 다음과 같다.
final screenSize = MediaQuery.of(context).size;
이것screenSize
을 바탕으로 종횡 방향으로 그려야 할 선의 수량을 계산한다./// 8dpグリッドを描画するCustomPainter
class _GridPaint extends CustomPainter {
_GridPaint({
this.screenSize,
});
final Size screenSize;
void paint(Canvas canvas, Size size) {
final lineSpacing = 8;
// 画面トップは4dp間隔を空けないと、グリッドがずれる
final topMargin = 4;
// +1しておかないと、線の数が足りないことがある
final horizontalLineCount = screenSize.width ~/ lineSpacing + 1;
final paint = Paint()
..color = Colors.red.withOpacity(0.7);
// 水平方向に線を引く
for (var i = 0; i < horizontalLineCount; i++) {
canvas.drawLine(
Offset(
(lineSpacing * i).toDouble(),
0,
),
Offset(
(lineSpacing * i).toDouble(),
screenSize.height,
),
paint,
);
}
// 垂直方向に線を引く
for (var i = 0; i < verticalLineCount; i++) {
canvas.drawLine(
Offset(
0,
(lineSpacing * i).toDouble() + topMargin,
),
Offset(
screenSize.width,
(lineSpacing * i).toDouble() + topMargin,
),
paint,
);
}
}
}
이후 Stack
를 사용하여 겹치면 다른 작은 위젯에 격자를 그릴 수 있습니다.Widget build(BuildContext context) {
final screenSize = MediaQuery.of(context).size;
return Stack(
children: [
child,// グリッドを重ね合わせたいWidget
CustomPaint(
painter: _GridPaint(
screenSize: screenSize,
),
)
],
);
}
실제로 사용하면 이런 느낌이 든다.참고 문헌
Spacing methods - Material Design
Reference
이 문제에 관하여(Flutter에서 Widget이 Material Design 설명서에 따라 구성되었는지 확인하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/welchi/articles/flutter-material-grid텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)