플라우터럭: 카드를 클릭할 수 있게 만드는 방법은 무엇입니까?
저는 카드와 같은 간단한 카드를 가지고 있으며 카드에 대한 방법이 없다는 것을 제외하고는 아무 곳이나 클릭하여 어떤 기능을 실행할 수 있기를 원합니다. 하단에 버튼을 추가할 수는 있지만, 이 상황에는 적합하지 않습니다.
카드 전체를 클릭할 수 있게 만드는 방법 아는 사람?
특성 위에 구성을 사용합니다. 원하는 위젯을 클릭 가능한 위젯으로 감싸서 원하는 위젯을 수행할 수 있습니다.
일부 클릭 가능한 위젯: , , .
GestureDetector(
onTap: () => ......,
child: Card(...),
);
Widget 안에 카드를 감는 것 외에도 사용할 수 있다고 생각합니다
InkWell(
onTap: (){ print("Card Clicked"); }
child: new Card(),
);
Float는 위젯을 제공합니다. 콜백을 등록하여 사용자가 카드를 클릭할 때 발생하는 작업(Tap in Float이라고 함)을 결정할 수 있습니다. 또한 재료 설계 파급 효과 구현
Card(
child: new InkWell(
onTap: () {
print("tapped");
},
child: Container(
width: 100.0,
height: 100.0,
),
),
),
Inkwell을 사용하고 사용자가 클릭할 때 선택한 색상으로 리바운드 효과를 생성하는 splashColor를 카드에 삽입할 수 있습니다.. 이것은 주로 재료 설계에 사용된다.
return Card(
color: item.completed ? Colors.white70 : Colors.white,
elevation: 8,
child: InkWell(
splashColor: "Insert color when user tap on card",
onTap: () async {
},
),
);
가장 선호되는 방법은 자식으로 추가하는 것입니다. 방법을 포함하고 있을 뿐만 아니라 카드를 흥미롭게 만드는 데에도 도움이 됩니다.
Card(
child: ListTile(
title: Text('Title')
leading: CircleAvatar(
backgroundImage: AssetImage('assets/images/test.jpg'),
),
onTap: () {
print('Card Clicked');
},
),
),
Flutter에서 InkWell은 터치 동작에 반응하는 재료 위젯입니다.
InkWell(
child: Card(......),
onTap: () {
print("Click event on Container");
},
);
제스처 탐지기는 제스처를 탐지하는 위젯입니다.
GestureDetector(
onTap: () {
print("Click event on Container");
},
child: Card(.......),
)
차이
InkWell은 재료 위젯으로 터치가 수신될 때마다 리플 효과를 표시할 수 있습니다.
제스처 감지기는 터치뿐만 아니라 다른 제스처에도 더 일반적인 용도로 사용됩니다.
텍스트 단추에 카드를 삽입할 수도 있습니다:
TextButton clickableCard = TextButton(child: card, onPressed: onCardClick, style: [...]);
이것은 일부 기능을 무료로 얻을 수 있는 이점을 제공합니다. 예를 들어 Floating Web에서는 마우스 오버 효과가 나타나고 커서가 손으로 바뀌므로 사용자는 해당 사용자가 해당 위치를 클릭할 수 있습니다. 다른 추가 기능은 스타일을 사용하여 사용자 지정할 수 있습니다.
Flooth에서 'child'를 탭/클릭하여 무언가를 수행합니다
코드:-코드는 다음과 같습니다:
child: Card(------
------------
--------),
:- 마우스 커서를 위에 놓고 (창에서)-를 누릅니다.
:- 기본 위젯을 로 변경합니다.
최종 코드:-
child: GestureDetector(
onTap: YourOnClickCode(),
child: Card(------
------------
--------),
),
아래와 같이 제스처 탐지기 위젯에서 카드를 감습니다:
GestureDetector(
onTap: () {
// To do
},
child: Card(
),
),
다른 방법은 다음과 같습니다:
InkWell(
onTap: () {
// To do
},
child: Card(),
),
대부분의 답변은 훌륭하지만 카드 탭이나 리스트 타일에 리플 효과를 내고/보여주고 싶은 사람을 위해 내 것을 공유하고 싶다.
Card(
child: TextButton(
onPressed: ()=> ...,
child: ListTile(
title: Text('title'),
),
),
);
를 클릭하는 동안 더 나은 UX를 원한다면 의 자식으로 추가하는 것을 제안한다. 이렇게 하면 클릭 시 실제 재료 3 효과를 얻을 수 있습니다. 아래 코드 스니펫을 사용하면 다음과 같은 작업이 가능합니다:
return Card(
child: InkWell(
borderRadius: BorderRadius.circular(12.0),
onTap: () {},
child: Column(
children: [
Text(
'This is a Clickable Card!',
style: TextStyle(fontSize: 20.0),
),
Text('Try This Out!'),
],
),
),
);
null이 아닌 한((){}만 있으면 null이 아닐 수 있습니다), 원하는 스플래시 효과를 얻을 수 있으며 클릭할 수 있습니다. 또한 Flutter 3.7.10의 현재 위젯은 와 함께 제공됩니다. 따라서 더 나은 UX를 위해 동일한 속성을 에 추가해야 합니다.
'개발하자' 카테고리의 다른 글
Float로 고정 바닥글로 스크롤 보기를 만드는 방법은 무엇입니까? (0) | 2023.04.22 |
---|---|
TypeScript의 인터페이스 대 유형 (0) | 2023.04.22 |
텍스트 파일에서 단어를 검색하고 파이썬으로 전체 줄을 인쇄하는 방법은 무엇입니까? (0) | 2023.04.21 |
데이터() 키가 TypeScript와 함께 작동하도록 만드는 방법은 무엇입니까? (0) | 2023.04.20 |
Submit.preventDefault()에서 TypeScript 대응이 작동하지 않음 (0) | 2023.04.19 |