| // Copyright 2015 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| import 'package:flutter/foundation.dart'; |
| import 'package:flutter/painting.dart'; |
| |
| import 'basic.dart'; |
| import 'framework.dart'; |
| |
| class DefaultTextStyle extends StatelessWidget { |
| DefaultTextStyle({Widget child}); |
| } |
| |
| class Text extends StatelessWidget { |
| /// The text to display. |
| /// |
| /// This will be null if a [textSpan] is provided instead. |
| final String data; |
| |
| /// If non-null, the style to use for this text. |
| /// |
| /// If the style's "inherit" property is true, the style will be merged with |
| /// the closest enclosing [DefaultTextStyle]. Otherwise, the style will |
| /// replace the closest enclosing [DefaultTextStyle]. |
| final TextStyle style; |
| |
| /// How the text should be aligned horizontally. |
| final TextAlign textAlign; |
| |
| /// The directionality of the text. |
| /// |
| /// This decides how [textAlign] values like [TextAlign.start] and |
| /// [TextAlign.end] are interpreted. |
| /// |
| /// This is also used to disambiguate how to render bidirectional text. For |
| /// example, if the [data] is an English phrase followed by a Hebrew phrase, |
| /// in a [TextDirection.ltr] context the English phrase will be on the left |
| /// and the Hebrew phrase to its right, while in a [TextDirection.rtl] |
| /// context, the English phrase will be on the right and the Hebrew phrase on |
| /// its left. |
| /// |
| /// Defaults to the ambient [Directionality], if any. |
| final TextDirection textDirection; |
| |
| /// Whether the text should break at soft line breaks. |
| /// |
| /// If false, the glyphs in the text will be positioned as if there was unlimited horizontal space. |
| final bool softWrap; |
| |
| /// How visual overflow should be handled. |
| final TextOverflow overflow; |
| |
| /// The number of font pixels for each logical pixel. |
| /// |
| /// For example, if the text scale factor is 1.5, text will be 50% larger than |
| /// the specified font size. |
| /// |
| /// The value given to the constructor as textScaleFactor. If null, will |
| /// use the [MediaQueryData.textScaleFactor] obtained from the ambient |
| /// [MediaQuery], or 1.0 if there is no [MediaQuery] in scope. |
| final double textScaleFactor; |
| |
| /// An optional maximum number of lines for the text to span, wrapping if necessary. |
| /// If the text exceeds the given number of lines, it will be truncated according |
| /// to [overflow]. |
| /// |
| /// If this is 1, text will not wrap. Otherwise, text will be wrapped at the |
| /// edge of the box. |
| /// |
| /// If this is null, but there is an ambient [DefaultTextStyle] that specifies |
| /// an explicit number for its [DefaultTextStyle.maxLines], then the |
| /// [DefaultTextStyle] value will take precedence. You can use a [RichText] |
| /// widget directly to entirely override the [DefaultTextStyle]. |
| final int maxLines; |
| |
| /// An alternative semantics label for this text. |
| /// |
| /// If present, the semantics of this widget will contain this value instead |
| /// of the actual text. This will overwrite any of the semantics labels applied |
| /// directly to the [TextSpan]s. |
| /// |
| /// This is useful for replacing abbreviations or shorthands with the full |
| /// text value: |
| /// |
| /// ```dart |
| /// Text(r'$$', semanticsLabel: 'Double dollars') |
| /// ``` |
| final String semanticsLabel; |
| |
| /// {@macro flutter.dart:ui.text.TextWidthBasis} |
| final TextWidthBasis textWidthBasis; |
| |
| /// Creates a text widget. |
| /// |
| /// If the [style] argument is null, the text will use the style from the |
| /// closest enclosing [DefaultTextStyle]. |
| /// |
| /// The [data] parameter must not be null. |
| const Text( |
| this.data, { |
| Key key, |
| this.style, |
| this.textAlign, |
| this.textDirection, |
| this.softWrap, |
| this.overflow, |
| this.textScaleFactor, |
| this.maxLines, |
| this.semanticsLabel, |
| this.textWidthBasis, |
| }) : super(key: key); |
| } |