Làm thế nào để gạch dưới văn bản bị rung


107

Làm thế nào để gạch dưới văn bản trong phần rung bên trong Textwidget?

Tôi dường như không thể tìm thấy gạch chân bên trong fontStyletài sản củaTextStyle

Câu trả lời:


239

Khi gạch dưới mọi thứ, bạn có thể đặt TextStyle trên tiện ích Text.

nhập mô tả hình ảnh ở đây

Text(
  'Hello world',
  style: TextStyle(
    decoration: TextDecoration.underline,
  ),
)

Nếu bạn chỉ muốn gạch dưới một phần của văn bản thì bạn cần sử dụng Text.rich()(hoặc tiện ích RichText) và ngắt chuỗi thành TextSpans mà bạn có thể thêm kiểu vào.

nhập mô tả hình ảnh ở đây

Text.rich(
  TextSpan(
    text: 'Hello ',
    style: TextStyle(fontSize: 50),
    children: <TextSpan>[
      TextSpan(
          text: 'world',
          style: TextStyle(
            decoration: TextDecoration.underline,
          )),
      // can add more TextSpans here...
    ],
  ),
)

TextSpan hơi lạ. Các texttham số là kiểu mặc định nhưng childrendanh sách chứa các văn bản theo kiểu (và có thể unstyled) mà theo nó. Bạn có thể sử dụng một chuỗi trống textnếu bạn muốn bắt đầu với văn bản được tạo kiểu.

Bạn cũng có thể thêm TextDecorationStyle để thay đổi cách trang trí. Đây là dấu gạch ngang:

nhập mô tả hình ảnh ở đây

Text(
  'Hello world',
  style: TextStyle(
    decoration: TextDecoration.underline,
    decorationStyle: TextDecorationStyle.dashed,
  ),
)

TextDecorationStyle.dotted:

nhập mô tả hình ảnh ở đây

TextDecorationStyle.double:

nhập mô tả hình ảnh ở đây

TextDecorationStyle.wavy:

nhập mô tả hình ảnh ở đây


9
Có thể thêm khoảng trắng giữa các từ và dòng gạch dưới không?
felangga

@felangga, Đó là một câu hỏi hay. Nó có thể liên quan đến đường cơ sở. Đó là điều mà tôi muốn khám phá thêm, nhưng tôi chưa biết phải làm như thế nào. Khám phá mã nguồn và cho tôi biết nếu bạn tìm ra.
Suragch

Có một vấn đề mở khi thêm khoảng trắng giữa văn bản và gạch dưới. github.com/flutter/flutter/issues/30541
Joe Muller

@felangga xem câu trả lời của tôi bên dưới để biết hai giải pháp cho phép bạn tăng khoảng cách giữa văn bản và gạch dưới
Joe Muller

Cảm ơn vì nỗ lực và lời giải thích
Sana'a Al-ahdal

32

Bạn làm điều đó bằng cách áp dụng decoration: TextDecoration.underlinecho TextStylea Text.

Với ví dụ Chủ đề:

          Text(
            "text",
            style: Theme
                .of(context)
                .accentTextTheme
                .subhead
                .copyWith(decoration: TextDecoration.underline),
          )

Ví dụ cơ bản:

          Text(
            "text",
            style: TextStyle(decoration: TextDecoration.underline),
          )

3

Bạn có thể sử dụng TextDecoration theo kiểu để gạch dưới một văn bản nhất định.

Ví dụ

Text(
    "Your text here",
    style: TextStyle(
        decoration: TextDecoration.underline),
    )
)

2

ví dụ

Text(
  "Terms and Condition",
  style: TextStyle(
    decoration:
        TextDecoration.underline,
    height: 1.5,
    fontSize: 15,
    fontWeight: FontWeight.bold,
    fontFamily: 'Roboto-Regular',
  ),
),

1

Giải pháp thú vị
Nếu bạn muốn kiểm soát khoảng cách giữa văn bản và gạch dưới, bạn có thể sử dụng hack này. Tóm lại, bạn ẩn văn bản thực bằng cách sử dụng Colors.transparent và sau đó hiển thị một bóng bù di chuột phía trên gạch dưới Văn bản.

        Text(
            "Forgot Password?",
            style: TextStyle(
              shadows: [
                Shadow(
                    color: Colors.black,
                    offset: Offset(0, -5))
              ],
              color: Colors.transparent,
              decoration:
              TextDecoration.underline,
              decorationColor: Colors.blue,
              decorationThickness: 4,
              decorationStyle:
              TextDecorationStyle.dashed,
            ),
          )

nhập mô tả hình ảnh ở đây

Như bạn sẽ thấy bên dưới, nếu bạn sử dụng gạch dưới Văn bản ngoài hộp, nó sẽ dính vào cuối văn bản và có thể trông hơi xấu,

Giải pháp nhàm chán

Chỉ sử dụng tiện ích Văn bản, bạn có thể thêm gạch dưới với kiểu và màu tùy chỉnh:

Text(
  "Forgot Password?",
  style: TextStyle(
    decoration: TextDecoration.underline,
    decorationColor: Colors.blue,
    decorationThickness: 4,
    decorationStyle: TextDecorationStyle.dashed,
   ),
)

Vấn đề duy nhất mà tôi gặp phải với cách tiếp cận này là bạn không thể kiểm soát được mức độ gần của gạch chân với cuối văn bản.

nhập mô tả hình ảnh ở đây

Nếu bạn muốn tăng khoảng cách, bạn sẽ phải sử dụng một cách tiếp cận độc đáo sử dụng Container và thuộc tính padding.

Container(
     padding: EdgeInsets.only(
       bottom: 5, // Space between underline and text
     ),
     decoration: BoxDecoration(
         border: Border(bottom: BorderSide(
         color: Colors.amber, 
         width: 1.0, // Underline thickness
        ))
      ),
     child: Text(
        "Forgot Password?",
        style: TextStyle(
        color: Colors.black,
        ),
       ),
      )

nhập mô tả hình ảnh ở đây

Hãy theo dõi vấn đề GitHub này để có giải pháp đơn giản hơn.


Tuy nhiên, một giải pháp xấu xí khác bằng cách sử dụng bóng đổ. câu trả lời cuối cùngStyle = TextStyle (trang trí: TextDecoration.underline, trang tríStyle: TextDecorationStyle.dashed, màu sắc: Colors.transparent, trang tríMàu sắc: Màu sắc. màu đen, bóng: [Shadow (màu: Colors.black, bù đắp: Offset (0, -5)) ],);
Sathish Kumar
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.