Text 위젯에서 Click에 따른 이벤트가 필요하다거나,
하나의 Text 라인에서 각 부분들이 다른 TextStyle을 가져야 할때,
RichText라는 위젯을 사용한다.
구조가 조금 특이한 위젯이다.
RichText라는 최상단 위젯에 text 속성으로 TextSpan 위젯을 준다.
TextSpan 위젯은 children을 받을 수 있고, 여기에 TextSpan을 여러개 생성해서 넣어준다.
RichText(
text: TextSpan(children: [
TextSpan(
text: '안녕하세요.',
style: TextStyle(color: Colors.black)),
TextSpan(
text: '저는 ',
style: TextStyle(fontWeight: FontWeight.w700)),
TextSpan(
text: '개발자 뮬리입니다.',
//텍스트를 클릭시 이벤트를 발생시키기 위함
recognizer: TapGestureRecognizer()
//클래스 생성과 동시에 '선언부..함수명'을 입력하면 클래스 변수 없이 함수를 바로 호출 가능함
..onTapDown = (details) {
//onTapDown에서 반환되는 값으로 터치한 Screen 위치를 알 수 있다.
print(details.globalPosition);
},
style: TextStyle(color: Colors.red)),
]),
),
TextSpan의 recognizer 속성에 위의 예제와 같이 TabGestureRecognizer()를 생성해주면
Text 클릭시 이벤트 발생을 구현할 수 있다.
'Flutter > Flutter Widget Basic' 카테고리의 다른 글
[플러터] 위젯에 클릭 이벤트 부여하기 (Inkwell, GestureDetector) (1) | 2021.07.31 |
---|---|
[플러터] Toast 메시지 (Snack bar) 생성하기 (0) | 2021.01.07 |
[플러터] bottom Navigation을 구현하는 3가지 방법 (0) | 2020.09.28 |
[플러터] Inkwell의 이펙트 제거 (0) | 2020.09.24 |
[Flutter] Appbar에서 알아야할 속성 (0) | 2020.08.22 |