Flutter: làm thế nào để tạo TextField với HintText nhưng không có Gạch chân?


116

Đây là những gì tôi đang cố gắng thực hiện:

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

Trong tài liệu Flutter dành cho Trường Văn bản ( https://flutter.io/text-input/ ), nó cho biết bạn có thể xóa gạch chân bằng cách chuyển nullđến phần trang trí. Tuy nhiên, điều đó cũng loại bỏ văn bản gợi ý.

Tôi không muốn bất kỳ gạch dưới nào cho dù trường văn bản có được tiêu điểm hay không.

CẬP NHẬT: câu trả lời được chấp nhận đã cập nhật để phản ánh những thay đổi trong Flutter SDK kể từ tháng 4 năm 2020.

Câu trả lời:


78

Câu trả lời không phải ở trên sẽ hoạt động đối với sdk flashing mới vì sau khi tích hợp hỗ trợ web và máy tính để bàn, bạn cần chỉ định riêng lẻ như thế này

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

232

Làm như thế này:

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

hoặc nếu bạn cần những thứ khác như biểu tượng, hãy đặt đường viền bằng InputBorder.none

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

Có thể làm điều đó mà không cần nhập materialgói không? tức là cho Cupertinochủ đề?
kosiara - Bartosz Kosarzycki

Tôi muốn tránh: InputDecoration' can't be assigned to the parameter type 'BoxDecoration'loại lỗi
kosiara - Bartosz Kosarzycki

13

thay đổi đường viền tiêu điểm thành không có

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

12

Đây là một câu trả lời bổ sung hiển thị một số mã đầy đủ hơn:

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

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

Ghi chú:

  • Nền tối (mã không hiển thị) là Colors.teal.
  • InputDecorationcũng có một filledvà thuộc fillColortính, nhưng tôi không thể làm cho chúng có bán kính góc, vì vậy tôi đã sử dụng một thùng chứa để thay thế.

3

Tôi không tìm thấy câu trả lời nào khác cung cấp bán kính đường viền, bạn có thể đơn giản làm như thế này, không có Container

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

-1

Tôi đang sử dụng điều khiển TextFieldrung. Tôi đã nhận được người dùng nhập đầu vào bằng các phương pháp dưới đây.

onChanged:(value){
}

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

Sự khác biệt giữa câu trả lời này và @E là gì. Câu trả lời của Sun từ một tháng trước?
Jeremy Caney

Bạn muốn một cái gì đó mới?
SR Keshav

2
Nếu câu trả lời đã được cung cấp, không cần phải gửi lại. Làm như vậy chỉ gây thêm tiếng ồn cho người đọc trong tương lai, vì họ cần phải sắp xếp thông qua nhiều câu trả lời giống nhau. Trong tương lai, khi bạn đã nổi tiếng hơn một chút, bạn sẽ có thể tán thành các câu trả lời hiện có; đó là cách ưa thích để xác thực một cách tiếp cận và khẳng định rằng giải pháp đó hoạt động.
Jeremy Caney

1
Tôi nên lưu ý rằng, thỉnh thoảng, những người đóng góp vẫn sẽ đăng một lời khuyên tương tự nếu họ có cách giải thích khác hoặc muốn thêm chi tiết đáng kể. Điều đó hoàn toàn ổn. Vấn đề ở đây là bạn dường như đang cung cấp cùng một câu trả lời, nhưng ít chi tiết hơn, vì vậy nó không đóng góp nhiều vào chủ đề.
Jeremy Caney
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.