前提・実現したいこと
「DefaultTextStyle.of(context).style」の仕様を理解したい。
発生している問題・エラーメッセージ
まずは以下に公式のサンプルを
まるっと貼り付けたので確認して頂きたいです。
flutter
1RichText( 2 text: TextSpan( 3 text: 'Hello ', 4 style: DefaultTextStyle.of(context).style, 5 children: <TextSpan>[ 6 TextSpan(text: 'bold', style: TextStyle(fontWeight: FontWeight.bold)), 7 TextSpan(text: ' world!'), 8 ], 9 ), 10)
上記のコードで実装すると何が起きるかというと、
以下の画像の様に真っ白で何も表示されない。
理想のコード(?)
理想というか、
自分の認識では以下の流れで使うものかと思っています。
❶「Hello」の段階でデフォルトであるスタイルを決定する。(黒文字、フォントサイズ30)
❷children: <TextSpan>[]内で「DefaultTextStyle.of(context).style」を使用することで「world!」の文字に❶で指定したスタイルが適用される
❸インラインで他のスタイルを適用する場合のみ、別でスタイルを指定する(「bold」のみデフォルトではないスタイルにする)
それを踏まえて以下のコードに書き換えました。
flutter
1RichText( 2 text: TextSpan( 3 text: 'Hello ', 4 style: TextStyle(color: Colors.black,fontSize: 30),//デフォルトを黒文字、フォントサイズ30指定 5 children: <TextSpan>[ 6 TextSpan( 7 text: 'bold', //↓デフォルトとは違うスタイルを指定 8 style: TextStyle(fontWeight: FontWeight.bold,color: Colors.blue,fontSize: 48), 9 ), 10 TextSpan(text: ' world!', style: DefaultTextStyle.of(context).style),//デフォルト設定 11 ], 12 ), 13 ),
そうすると、
文字が全て表示され、
「Hello」で指定したスタイルが「world!」にも適用されました。
もし仕様の認識が違っていたら、ご指摘いただければ幸いです。
宜しくお願い致します。
追記
自己解決はしましたが、
他にも見解等あれば、ご意見お待ちしております。
宜しくお願い致します。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。