Flutter에서 위젯에 테두리를 추가하는 방법은 무엇입니까?


151

Flutter를 사용하고 있으며 위젯 (이 경우에는 텍스트 위젯)에 테두리를 추가하고 싶습니다.

TextStyle과 Text를 시도했지만 테두리를 추가하는 방법을 보지 못했습니다.

답변:


304

당신은 추가 할 수 있습니다 TextFieldA와를 childA와 Container가 그 BoxDecorationborder특성 :

여기에 이미지 설명을 입력하십시오

new Container(
  margin: const EdgeInsets.all(15.0),
  padding: const EdgeInsets.all(3.0),
  decoration: BoxDecoration(
    border: Border.all(color: Colors.blueAccent)
  ),
  child: Text("My Awesome Border"),
)

206

다음은 확장 된 답변입니다. A DecoratedBox는 테두리를 추가해야하지만 Container여백과 패딩을 추가하기 위해 편의를 사용하고 있습니다.

일반적인 설정은 다음과 같습니다.

여기에 이미지 설명을 입력하십시오

Widget myWidget() {
  return Container(
    margin: const EdgeInsets.all(30.0),
    padding: const EdgeInsets.all(10.0),
    decoration: myBoxDecoration(), //             <--- BoxDecoration here
    child: Text(
      "text",
      style: TextStyle(fontSize: 30.0),
    ),
  );
}

곳이 BoxDecoration있습니다

BoxDecoration myBoxDecoration() {
  return BoxDecoration(
    border: Border.all(),
  );
}

테두리 너비

여기에 이미지 설명을 입력하십시오

이들의 테두리 너비가 1, 3그리고 10각각을.

BoxDecoration myBoxDecoration() {
  return BoxDecoration(
    border: Border.all(
      width: 1, //                   <--- border width here
    ),
  );
}

테두리 색

여기에 이미지 설명을 입력하십시오

이들은 테두리 색상이

  • Colors.red
  • Colors.blue
  • Colors.green

암호

BoxDecoration myBoxDecoration() {
  return BoxDecoration(
    border: Border.all(
      color: Colors.red, //                   <--- border color
      width: 5.0,
    ),
  );
}

경계면

여기에 이미지 설명을 입력하십시오

이것들은 경계면이 있습니다.

  • 왼쪽 (3.0), 위쪽 (3.0)
  • 바닥 (13.0)
  • 왼쪽 (파랑 [100], 15.0), 위쪽 (파랑 [300], 10.0), 오른쪽 (파랑 [500], 5.0), 아래쪽 (파랑 [800], 3.0)

암호

BoxDecoration myBoxDecoration() {
  return BoxDecoration(
    border: Border(
      left: BorderSide( //                   <--- left side
        color: Colors.black,
        width: 3.0,
      ),
      top: BorderSide( //                    <--- top side
        color: Colors.black,
        width: 3.0,
      ),
    ),
  );
}

테두리 반경

여기에 이미지 설명을 입력하십시오

이들의 국경 반경이 5, 10그리고 30각각을.

BoxDecoration myBoxDecoration() {
  return BoxDecoration(
    border: Border.all(
      width: 3.0
    ),
    borderRadius: BorderRadius.all(
        Radius.circular(5.0) //                 <--- border radius here
    ),
  );
}

계속

DecoratedBox/ BoxDecoration매우 유연합니다. 더 많은 아이디어를 얻으려면 Flutter-BoxDecoration Cheat Sheet 를 읽으십시오 .


누구나 BorderRadius와 함께 BorderSide를 사용하는 방법을 알고 있습니까?
HaSnen Tai

@HaSnenTai 해결책을 찾았습니까? 내 디자인에서는 필처럼 모양이 테두리 아래쪽을 제공해야합니다. 어떻게하면 되나요?
Robert Williams

@RobertWilliams에서는 사용자 정의 드로잉 위젯을 사용합니다.
Suragch

@Suragch 위젯은 텍스트 (강제 모양의) 테두리가 필요한 텍스트입니다. 텍스트 위젯 너비는 고정되어 있지 않습니다. 사용자 정의 드로잉 위젯을 사용하기 위해 수정 속성을 제공 할 필요가 없습니까?
Robert Williams

@RobertWilliams, 나는 당신이 무엇을하려고하는지 정확히 모르겠습니다. 현재 작동하지 않는 것에 대한 그림과 설명으로 새 질문을 열었습니다. 여기에서 자유롭게 연결하십시오.
Suragch

10

문서에 명시된대로, flutter는 매개 변수보다 구성을 선호합니다. 당신이 찾고있는 대부분의 시간은 속성이 아니라 래퍼입니다 (때로는 몇몇 도우미 / "빌더")

원하는 테두리 DecoratedBox는입니다.decoration 를 정의 속성이 있습니다. 배경 이미지 나 그림자도 있습니다.

@Aziza가 말했듯이을 사용할 수 있습니다 Container. 어떤의 조합 DecoratedBox, SizedBox그리고 몇 가지 다른 유용한 위젯.


7

가장 좋은 방법은 BoxDecoration ()을 사용하는 것입니다

이점

  • 테두리 를 설정할 수 있습니다위젯의 를
  • 테두리 색상 또는 너비를 설정할 수 있습니다
  • 둥근 모서리를 설정할 수 있습니다테두리의 를
  • 위젯의 그림자 를 추가 할 수 있습니다

불리

  • BoxDecorationContainer위젯 과 함께 사용하여 위젯을 래핑하려는 경우Container()

    Container(
      margin: EdgeInsets.all(10),
      padding: EdgeInsets.all(10),
      alignment: Alignment.center,
      decoration: BoxDecoration(
        color: Colors.orange,
        border: Border.all(
            color: Colors.pink[800],// set border color
            width: 3.0),   // set border width
        borderRadius: BorderRadius.all(
            Radius.circular(10.0)), // set rounded corner radius
        boxShadow: [BoxShadow(blurRadius: 10,color: Colors.black,offset: Offset(1,3))]// make rounded corner of border
      ),
      child: Text("My demo styling"),
    )

여기에 이미지 설명을 입력하십시오


1

BoxDecoration ()을 사용하는 것이 테두리를 표시하는 가장 좋은 방법입니다.

Container(
  decoration: BoxDecoration(
    border: Border.all(
    color: Color(0xff000000),
    width: 4,
  )),
  child: //Your child widget
),

여기에서 전체 형식을 볼 수도 있습니다


0

컨테이너를 사용하여 위젯을 포함 할 수 있습니다.

Container(
  decoration: BoxDecoration(
    border: Border.all(
    color: Color(0xff000000),
    width: 1,
  )),
  child: Text()
),

-1

Boxdercoration이있는 용기를 사용하십시오.

 BoxDecoration(
    border: Border.all(
      width: 3.0
    ),
    borderRadius: BorderRadius.circular(10.0)
  );
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.