Flutter: วิธีสร้าง TextField ด้วย HintText แต่ไม่มีขีดเส้นใต้?


120

นี่คือสิ่งที่ฉันพยายามทำ:

ป้อนคำอธิบายภาพที่นี่

ในเอกสาร Flutter สำหรับช่องข้อความ ( https://flutter.io/text-input/ ) ระบุว่าคุณสามารถลบขีดเส้นใต้ได้โดยส่งผ่านnullไปยังส่วนตกแต่ง อย่างไรก็ตามนั่นยังกำจัดข้อความคำใบ้

ฉันไม่ต้องการขีดเส้นใต้ว่าช่องข้อความถูกโฟกัสหรือไม่

อัปเดต:อัปเดตคำตอบที่ยอมรับเพื่อสะท้อนการเปลี่ยนแปลงใน Flutter SDK ณ เดือนเมษายน 2020

คำตอบ:


86

คำตอบที่ไม่ใช่คำตอบข้างต้นจะใช้ได้กับ flutter sdk ใหม่เนื่องจากหลังจากรวมการสนับสนุนเว็บและเดสก์ท็อปแล้วคุณต้องระบุทีละรายการเช่นนี้

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

235

ทำเช่นนี้:

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

หรือหากคุณต้องการสิ่งอื่น ๆ เช่นไอคอนให้ตั้งค่าเส้นขอบด้วย InputBorder.none

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

เป็นไปได้ไหมที่จะทำโดยไม่ต้องนำเข้าmaterialบรรจุภัณฑ์ เช่นสำหรับCupertinoธีม?
kosiara - Bartosz Kosarzycki

ฉันต้องการหลีกเลี่ยง: InputDecoration' can't be assigned to the parameter type 'BoxDecoration'พิมพ์ error
kosiara - Bartosz Kosarzycki

15

เปลี่ยนเส้นขอบที่โฟกัสเป็นไม่มี

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

14

นี่คือคำตอบเพิ่มเติมที่แสดงรหัสที่สมบูรณ์กว่า:

ป้อนคำอธิบายภาพที่นี่

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

หมายเหตุ:

  • พื้นหลังสีดำ (รหัสไม่แสดง) Colors.tealคือ
  • InputDecorationมีคุณสมบัติa filledและfillColorด้วย แต่ฉันไม่สามารถทำให้มันมีรัศมีมุมได้ฉันจึงใช้คอนเทนเนอร์แทน

4

ฉันไม่พบคำตอบอื่นใดที่ให้รัศมีขอบคุณสามารถทำได้แบบนี้ไม่มีการซ้อนกัน Container

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

-1

ฉันใช้การTextFieldควบคุมการกระพือฉันได้รับผู้ใช้พิมพ์อินพุตโดยใช้วิธีการด้านล่าง

onChanged:(value){
}

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

คำตอบนี้กับ@E ต่างกันอย่างไร คำตอบของซันเมื่อเดือนที่แล้ว?
Jeremy Caney

คุณต้องการอะไรใหม่ ๆ ?
SR Keshav

2
หากได้รับคำตอบแล้วก็ไม่จำเป็นต้องส่งอีกครั้ง การทำเช่นนี้จะเพิ่มเสียงรบกวนสำหรับผู้อ่านในอนาคตเท่านั้นเนื่องจากต้องเรียงลำดับคำตอบที่คล้ายกันหลายคำตอบ ในอนาคตเมื่อคุณมีชื่อเสียงมากขึ้นคุณจะสามารถเพิ่มคะแนนคำตอบที่มีอยู่ได้ นั่นเป็นวิธีที่ดีที่สุดในการตรวจสอบความถูกต้องของแนวทางและยืนยันว่าโซลูชันนั้นใช้ได้ผล
Jeremy Caney

1
ฉันควรทราบว่าในบางครั้งผู้ร่วมให้ข้อมูลจะยังคงโพสต์คำแนะนำที่คล้ายกันหากพวกเขามีวิธีการอธิบายที่แตกต่างออกไปหรือต้องการเพิ่มรายละเอียดมากขึ้น ไม่เป็นไร ปัญหาคือดูเหมือนว่าคุณจะให้คำตอบเดียวกันแต่มีรายละเอียดน้อยจึงไม่ได้มีส่วนช่วยในเธรดมากนัก
Jeremy Caney
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.