Flutter
[Flutter] DateTime / Clipboard / Snackbar / TextField Inputformatter 사용
_annie_
2021. 11. 9. 20:00
728x90
반응형
현재 시간을 알고싶을 때 DateTime을 사용한다.
하지만 DateTime은 디바이스 로컬 시간을 가져온다는 점 유의하자.
var now = DateTime.now();
String today = '${now.year}. ${now.month}. ${now.day}'; //2021. 11. 5
now.year -> 년
now.month -> 월
now.day -> 일
UTC시간 : 협정 세계시
utc시간을 얻으려면 ntp라는 라이브러리를 사용하는듯 하다 (추후 사용하게된다면 정리)
ListTile의 항목을 꾹 눌렀을 때(long press) 해당 내용을 복사하고싶다면 Clipboard 위젯을 사용한다.
+)스낵바를 적용해보았다.
ListTile(
onLongPress: (){
Clipboard.setData(ClipboardData(text: widget.itemText));
final snackBar = SnackBar(content: Text('copy complete!'), action: SnackBarAction( label: '닫기', onPressed: () {},),);
ScaffoldMessenger.of(context).showSnackBar(snackBar);
}
//..생략
)
widget.itemText -> 멤버변수로 등록해놓음 해당 자리에 복사하고 싶은 내용이 담긴 변수를 지정해주면된다.
SnackBar 위젯을 생성해서 ScaffoldMessenger의 showSnackBar로 보여주면 된다.
Text속성은 스낵바에 보여줄 내용, label은 버튼 이름이고
action 을 넣게되면 오른쪽에 버튼이 생성되는데, 버튼 클릭 시 동작할 내용을 지정해줄 수도 있다.
TextField에 숫자만 입력하고 싶다면 TextField의 속성인 inputFormatters를 지정해준다.
TextField(
inputFormatters: [
FilteringTextInputFormatter.digitsOnly
]
)
FilteringTextInputFormatter.digitsOnly 속성을 지정해주면 숫자만 입력 가능하다.
FilteringTextInputFormatter.digitsOnly //숫자만 입력가능
FilteringTextInputFormatter.deny(' ') //스페이스바 금지
FilteringTextInputFormatter.deny(RegExp('[0-9]')) //숫자입력금지
FilteringTextInputFormatter.deny(RegExp('[123]')) //1,2,3입력금지
keyboardType: TextInputType.number
+키보드 타입을 숫자로 변경하는 방법도 있다.
TextField의 keyboardType을 number로 지정해준다.
728x90
반응형