Tinyrack

トークン

共通デザイントークンから生成したFlutterの値を使います。

JSONのトークンソースから、WebのCSSとFlutterの値を生成します。数値を 複製せず、公開トークンクラスを使ってください。

Padding(
  padding: const EdgeInsets.all(TRSpacing.medium),
  child: DecoratedBox(
    decoration: const BoxDecoration(
      borderRadius: BorderRadius.all(TRRadii.medium),
      boxShadow: [TRShadows.raised],
    ),
    child: Text('ラック', style: TRTypography.body),
  ),
);

TRSpacingTRRadiiTRTypographyTRMotionTRShadowsには、 各プラットフォーム向けに変換した値が入ります。CSS固有の単位と シャドウ構文はジェネレーターが変換し、未対応の変換がある場合は 生成トークンの検証が失敗します。

レイアウトの幅

TRBreakpointsにはレイアウトの形が変わるビューポート幅が、 TRMeasurementsにはその中に置く領域の幅が入ります。どちらもトークンから 読むことで、同じアプリの2つの画面が異なる幅で再配置されるのを防げます。

LayoutBuilder(
  builder: (context, constraints) => constraints.maxWidth < TRBreakpoints.small
      ? detail
      : Row(
          children: [
            SizedBox(width: TRMeasurements.measureXl, child: list),
            Expanded(child: detail),
          ],
        ),
);

Flutterでは、コンポーネントが実際に使うsmallextraLargeの2つの しきい値を公開します。幅を制限するコンテンツ領域にはmeasureスケールを、 1つのコントロールにはTRControlMetricsを使ってください。製品固有の ペイン幅や読み物の幅は、共通トークンAPIではなく製品のレイアウトで定義します。