Flutter: HintText ile ancak Altı Çizili olmayan bir TextField nasıl oluşturulur?


117

Yapmaya çalıştığım şey bu:

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

Metin Alanları için Flutter belgelerinde ( https://flutter.io/text-input/ ) null, dekorasyona geçerek alt çizgiyi kaldırabileceğinizi söylüyor . Ancak, bu aynı zamanda ipucu metninden de kurtulur.

Metin alanının odaklanmış olup olmadığının altını çizmek istemiyorum.

GÜNCELLEME: Nisan 2020 itibarıyla Flutter SDK'daki değişiklikleri yansıtmak için güncellenmiş kabul edilmiş yanıt.

Yanıtlar:


81

Yukarıdaki cevaplardan hiçbiri yeni flutter sdk için işe yaramayacaktır çünkü web ve masaüstü desteğinin entegrasyonundan sonra, bunun gibi ayrı ayrı belirtmeniz gerekir.

TextFormField(
    cursorColor: Colors.black,
    keyboardType: inputType,
    decoration: new InputDecoration(
        border: InputBorder.none,
        focusedBorder: InputBorder.none,
        enabledBorder: InputBorder.none,
        errorBorder: InputBorder.none,
        disabledBorder: InputBorder.none,
        contentPadding:
            EdgeInsets.only(left: 15, bottom: 11, top: 11, right: 15),
        hintText: sLabel),
  )

233

Bunu şöyle yapın:

TextField(
  decoration: new InputDecoration.collapsed(
    hintText: 'Username'
  ),
),

veya simge gibi başka şeylere ihtiyacınız varsa, sınırı InputBorder.none

InputDecoration(
    border: InputBorder.none,
    hintText: 'Username',
  ),
),

materialPaketi ithal etmeden yapmak mümkün mü ? yani Cupertinotema için?
kosiara - Bartosz Kosarzycki

Kaçınmak istiyorum: InputDecoration' can't be assigned to the parameter type 'BoxDecoration'type error
kosiara - Bartosz Kosarzycki

13

odaklanmış sınırı yok olarak değiştir

TextField(
      decoration: new InputDecoration(
          border: InputBorder.none,
          focusedBorder: InputBorder.none,
          contentPadding: EdgeInsets.only(left: 15, bottom: 11, top: 11, right: 15),
          hintText: 'Subject'
      ),
    ),

12

İşte bazı tam kodları gösteren tamamlayıcı bir cevap:

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

  Container(
    decoration: BoxDecoration(
      color: Colors.tealAccent,
      borderRadius:  BorderRadius.circular(32),
    ),
    child: TextField(
      decoration: InputDecoration(
        hintStyle: TextStyle(fontSize: 17),
        hintText: 'Search your trips',
        suffixIcon: Icon(Icons.search),
        border: InputBorder.none,
        contentPadding: EdgeInsets.all(20),
      ),
    ),
  ),

Notlar:

  • Koyu arka plan (kod gösterilmemiştir) Colors.teal .
  • InputDecorationAyrıca bir filledve fillColorözelliği var, ancak onlara bir köşe yarıçapına sahip olamadım, bu yüzden bunun yerine bir kap kullandım.

3

Başka hiçbir cevabın bir sınır yarıçapı vermediğini buldum, bunu basitçe yapabilirsiniz, iç içe değil Container

  TextField(
    decoration: InputDecoration(
      border: OutlineInputBorder(
        borderSide: BorderSide.none,
        borderRadius: BorderRadius.circular(20),
      ),
    ),
  );

-1

TextFieldFlutter kontrolünü kullanıyordum.Kullanıcıya aşağıdaki yöntemleri kullanarak girdi yazdım .

onChanged:(value){
}

-2
decoration: InputDecoration(
 border:OutLineInputBorder(
 borderSide:BorderSide.none
 bordeRadius: BordeRadius.circular(20.0)
 )
)

Bu cevap ile @E arasındaki fark nedir . Sun'ın bir ay önceki cevabı ?
Jeremy Caney

Yeni bir şey ister misin?
SR Keshav

2
Zaten bir cevap verilmişse, tekrar göndermeye gerek yoktur. Bunu yapmak, birden çok benzer yanıtı sıralaması gerektiğinden, yalnızca gelecekteki okuyucular için gürültü yaratır. Gelecekte, biraz daha fazla itibar kazandıktan sonra, mevcut yanıtları yükseltebileceksiniz; bir yaklaşımı doğrulamanın ve çözümün işe yaradığını onaylamanın tercih edilen yolu budur.
Jeremy Caney

1
Katkıda bulunanların, farklı bir açıklama yöntemine sahiplerse veya önemli ölçüde daha fazla ayrıntı eklemek isterlerse , zaman zaman yine de benzer bir tavsiye göndereceklerini not etmeliyim . Bu tamamen iyi. Buradaki sorun, sizin aynı cevabı veriyor gibi görünmenizdir, ancak daha az ayrıntıyla, bu nedenle konuya fazla bir katkı sağlamaz.
Jeremy Caney
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.