今のところ標準のDividerウィジェットには線を点線にする設定がないため、自作するかパッケージを使う必要があります。
このページではListViewを使った点線のDividerを作成するコードを紹介します。
目次
完成コード
import 'package:flutter/material.dart';
class DottedDivider extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return LayoutBuilder(
      builder: (BuildContext context, BoxConstraints constraints) {
        final double lineWidth = constraints.maxWidth;  // Dividerの横幅
        final double dashWidth = 5.0; // 点線の幅
        final double dashSpace = 5.0; // 線と線の間隔
         // 点線の個数を計算
        int dashCount = (lineWidth / (dashWidth + dashSpace)).floor();
        return Container(
          width: lineWidth,
          height: 1.0, // Dividerの高さ
          child: ListView.builder(
            itemCount: dashCount,
            scrollDirection: Axis.horizontal,
            itemBuilder: (BuildContext context, int index) {
              // 各点線の描画
              return Container(
                width: dashWidth,
                height: 1.0, // 点線の高さ
                color: Colors.black, // 点線の色
                margin: EdgeInsets.symmetric(horizontal: dashSpace),
              );
            },
          ),
        );
      },
    );
  }
}- LayoutBuilderウィジェットは、親の制約に基づいてウィジェットを構築するためのものです。ここでは、Dividerの横幅を取得します。
- dashWidthは各点線の幅を、- dashSpaceは各点線の間隔を表します。
- dashCountは、線全体に収まるように点線の個数を計算します。(全体の線の長さ÷(点線の幅 + 線と線の間隔の幅))で、点線を表示する個数を算出しています。
- ListView.builderでの- dashCount個数分、線を表示しています。
点線の幅、間隔、および色は調整可能です。
上記の例では、点線の幅は5.0、線と線の間隔も5.0としていますが、必要に応じて変更できます。
使い方
void main() {
  runApp(
    MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Dotted Divider Example'),
        ),
        body: Center(
          child: DottedDivider(),
        ),
      ),
    ),
  );
}





Comment