Flutter'da metnin altı nasıl çizilir


107

TextWidget'ın içindeki flutter'daki metnin altı nasıl çizilir ?

fontStyleÖzelliğinin içinde alt çizgi bulamıyorumTextStyle

Yanıtlar:


238

Her şeyin altını çizerken, Metin widget'ında bir Metin Stili ayarlayabilirsiniz.

görüntü açıklamasını buraya girin

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

Metnin yalnızca bir kısmının altını çizmek istiyorsanız, o zaman Text.rich()(veya bir RichText widget'ı) kullanmanız ve dizeyi bir stil ekleyebileceğiniz TextSpans'e bölmeniz gerekir.

görüntü açıklamasını buraya girin

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 biraz tuhaf. textParametre varsayılan stil ama childrenliste onu takip tarz (ve muhtemelen stillendirilmemiş) metin içeriyor. textStili metinle başlamak istiyorsanız boş bir dize kullanabilirsiniz .

Dekorasyonun görünümünü değiştirmek için bir TextDecorationStyle da ekleyebilirsiniz. İşte kesikli:

görüntü açıklamasını buraya girin

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

ve TextDecorationStyle.dotted:

görüntü açıklamasını buraya girin

ve TextDecorationStyle.double:

görüntü açıklamasını buraya girin

ve TextDecorationStyle.wavy:

görüntü açıklamasını buraya girin


9
Kelimeler ve altı çizili çizgi arasına boşluk eklemek mümkün müdür?
felangga

@felangga, Bu iyi bir soru. Muhtemelen taban çizgisiyle ilgili olacaktır. Bu, daha fazlasını keşfetmek istediğim bir şey, ancak henüz nasıl yapacağımı bilmiyorum. Kaynak kodunu inceleyin ve çözerseniz bana bildirin.
Suragch

Metin ve alt çizgi arasına boşluk eklemenin açık bir sorunu var. github.com/flutter/flutter/issues/30541
Joe Muller

@felangga Metin ve alt çizgi arasındaki boşluğu artırmanıza izin veren iki çözüm için aşağıdaki cevabıma bakın
Joe Muller

Çaba ve açıklama için teşekkürler
Sana'a Al-ahdal

32

Sen uygulayarak bunu decoration: TextDecoration.underlineiçin TextStylea Text.

Tema örneği ile:

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

Temel örnek:

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

3

Belirli bir metnin altını çizmek için TextDecoration'ı stilde kullanabilirsiniz.

Örneğin

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

2

Örneğin

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

1

Heyecan verici çözüm
Metin ile altı çizili arasındaki mesafe üzerinde kontrol sahibi olmak istiyorsanız, bu hack'i kullanabilirsiniz. Kısacası, Colors.transparent kullanarak gerçek metni gizlersiniz ve ardından Metnin alt çizgisinin üzerinde gezinen bir ofset gölgesi görüntülersiniz.

        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,
            ),
          )

görüntü açıklamasını buraya girin

Aşağıda göreceğiniz gibi, kullanıma hazır Metin alt çizgisini kullanırsanız, metnin altına yapışır ve biraz çirkin görünebilir,

Sıkıcı Çözümler

Yalnızca Metin widget'ını kullanarak alt çizgiyi özel bir stil ve renkle ekleyebilirsiniz:

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

Bu yaklaşımla ilgili tek sorunum, alt çizginin metnin altına ne kadar yakın olduğu konusunda hiçbir kontrolünüzün olmaması.

görüntü açıklamasını buraya girin

Aralığı artırmak istiyorsanız, Container ve onun padding özelliğini kullanan alışılmadık bir yaklaşım kullanmanız gerekecektir.

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,
        ),
       ),
      )

görüntü açıklamasını buraya girin

Daha basit bir çözüm için bu GitHub sorununa bir göz atın .


Gölgelerin kullanıldığı başka bir çirkin çözüm. final answerStyle = TextStyle (dekorasyon: TextDecoration.underline, decorationStyle: TextDecorationStyle.dashed, color: Colors.transparent, decorationColor: Colors.black, shadows: [Shadow (color: Colors.black, offset: Offset (0, -5)) ],);
Sathish Kumar
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.