【 Flutter 】Flutter を 基礎 から 学習 ( ウィジェット編 ) part06 基本的なウィジェット

基礎 から 学ぶ Flutter 」という書籍で  学習 したことを ブログでアウトプットしていこうと思います。今回は ウィジェット編 ( part06 )です。

前回

【 Flutter 】Flutter を 基礎 から 学習 ( ウィジェット編 ) part05 基本的なウィジェット

引き続き、基本的なウィジェットについて学習していきます。

基本的なウィジェット

Tets,RichTextウィジェット

maxLinesプロパティ

最大の行数を指定します。
それ以上の文字列の場合は前回学習したoverflowプロパティの値に依存するようです。

import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      // home: MyHomePage(title: 'Flutter Demo Home Page'),
      initialRoute: '/',
      routes: {
        '/': (context) => FirstPage(),
      },
    );
  }
}

class FirstPage extends StatelessWidget {
  Widget build(BuildContext context) {
    final ThemeData theme = Theme.of(context);
    final TextTheme textTheme = theme.textTheme;
    final titleStyle =
        textTheme.headline6!.copyWith(color: theme.backgroundColor);

    return Scaffold(
      appBar: AppBar(
          title: Text(
        'First Page',
        style: titleStyle,
      )),
      body: Column(
        mainAxisAlignment: MainAxisAlignment.spaceAround,
        children: <Widget>[
          Container(
            width: double.infinity,
            color: Colors.green,
            child: const Text(
              "ああああああああああああああああああああああああああああああああああああああ",
              softWrap: false,
              overflow: TextOverflow.clip, // 効果不明・・・
              maxLines: 2, // 最大2行で表現します。
            ),
          ),
          Container(
            width: double.infinity,
            color: Colors.red,
            child: const Text(
              "いいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいい",
              softWrap: false,
              overflow: TextOverflow.fade, // 末尾の文字がす~っと消えています。
              maxLines: 2, // 最大2行で表現します。
            ),
          ),
          Container(
            width: double.infinity,
            color: Colors.green,
            child: const Text(
              "ううううううううううううううううううううううううううううううううううううう",
              softWrap: false,
              overflow: TextOverflow.ellipsis, // 末尾が「...」になります。
              maxLines: 2, // 最大2行で表現します。
            ),
          ),
          Container(
            width: double.infinity,
            color: Colors.red,
            child: const Text(
              "えええええええええええええええええええええええええええええええええええええ",
              softWrap: false,
              overflow: TextOverflow.visible, // 効果不明・・・
              maxLines: 2, // 最大2行で表現します。
            ),
          ),
        ],
      ),
    );
  }
}

実行してみたのですが・・・ellipsis以外は効果がわかりませんでした。

semanticsLabel

semanticsLabelプロパティは、アクセシビリティ用のプロパティです。

この項目はこれだけでした。さすがにこれではよくわかりません(笑

以下のサイトの英語と頑張って読んでいました。

semanticsLabel property – Text class – widgets library – Dart API (flutter.dev)

HTMLのaltのような役割のプロパティでしょうか?

import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      // home: MyHomePage(title: 'Flutter Demo Home Page'),
      initialRoute: '/',
      routes: {
        '/': (context) => FirstPage(),
      },
    );
  }
}

class FirstPage extends StatelessWidget {
  Widget build(BuildContext context) {
    final ThemeData theme = Theme.of(context);
    final TextTheme textTheme = theme.textTheme;
    final titleStyle =
        textTheme.headline6!.copyWith(color: theme.backgroundColor);

    return Scaffold(
      appBar: AppBar(
          title: Text(
        'First Page',
        style: titleStyle,
      )),
      body: Column(
        mainAxisAlignment: MainAxisAlignment.spaceAround,
        children: <Widget>[
          Container(
            width: double.infinity,
            color: Colors.green,
            child: const Text(r'$$',
                semanticsLabel: 'ドル記号が2つです。'), // semanticsLabel使ってみました。
          ),
        ],
      ),
    );
  }
}

確認してみましたが画面には「$$」と表示されるだけでした。
アクセシビリティなので目や耳が不自由な方用のプロパティだと思います。

最後に

Androidエミュレータで効果がわからないプロパティなのでつらいですね。

今日はここまで!