【 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エミュレータで効果がわからないプロパティなのでつらいですね。
今日はここまで!
ディスカッション
コメント一覧
まだ、コメントがありません