반응형
1. ElevatedButton
2. OutlinedButton
3. TextButton
import 'package:flutter/material.dart';
class HomeScreen extends StatelessWidget {
const HomeScreen({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('버튼'),
),
body: Padding(
padding: const EdgeInsets.symmetric(horizontal: 10.0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.stretch,
mainAxisAlignment: MainAxisAlignment.center,
children: [
ElevatedButton(
onPressed: () {},
style: ElevatedButton.styleFrom(
backgroundColor: Colors.red,
foregroundColor: Colors.white,
shadowColor: Colors.blue,
elevation: 10.0, // shaodw의 강도(더 튀어나와 보이게)
textStyle: TextStyle(
fontWeight: FontWeight.w700,
fontSize: 25.0,
),
padding: EdgeInsets.all(32.0),
side: BorderSide( // 테두리속성
color: Colors.black,
width: 4.0,
)
),
child: Text('Elevated Button')
),
OutlinedButton(
onPressed: (){},
style: OutlinedButton.styleFrom(
backgroundColor: Colors.green,
foregroundColor: Colors.yellow,
elevation: 10.0, // 이걸 하면 elevated button이랑 같아진다고 봐야됨.
),
child: Text('Outlined Button')
),
TextButton(
onPressed: (){},
style: TextButton.styleFrom(
backgroundColor: Colors.pink,
foregroundColor: Colors.amberAccent
),
child: Text('TextButton')),
ElevatedButton(
onPressed: (){},
style: ButtonStyle(
backgroundColor: MaterialStateProperty.all( // 기본값 -어떤 상태에서든 고정(StyleFrom과 동일)
Colors.black
),
foregroundColor: MaterialStateProperty.resolveWith((Set<MaterialState> states) {// 버튼이 어떤 상태이냐에 따라서 다른 색을 넣을 수 있다.
//MaterialState
//
//hovered - 호버링 상태( 마우스 커서를 올려 놓은 상태 모바일은 호버링X)
//focused - 포커스 됐을 때(텍스트 필드 눌렀을 때 깜빡임)
//pressed - 눌렸을 때(o)
// dragged - 드래그 됐을 때
// selected - 선택됐을 때 (체크박스, 라디오 버튼 등)
// scrollUnder - 다른 컴포넌트 밑으로 스크롤링 됐을 때
//disabled - 비활성화 됐을 때 ( o) (onpressed가 null로 버튼 자체가 비활성화)
//error - 에러상태
if(states.contains(MaterialState.pressed)) {
return Colors.white;
}
return Colors.red;
}
),
padding: MaterialStateProperty.resolveWith((Set<MaterialState> states) {
if(states.contains(MaterialState.pressed)){
return EdgeInsets.all(100.0);
}
return EdgeInsets.all(20.0);
}
)
),
child: Text('ButtonStyle')),
],
),
),
);
}
}
반응형
'Flutter > Flutter 기본' 카테고리의 다른 글
[Flutter] 화면 전환, 데이터 전달2 (argument) (0) | 2023.05.12 |
---|---|
[Flutter] 화면 전환, 데이터 전달1 (navigation) (0) | 2023.05.12 |
[Flutter] 코드 정리 (2) | 2023.05.01 |
[Flutter] 중복되는 코드 하나로 줄이기(.map)으로 (0) | 2023.04.21 |
[Flutter]날짜와 시간에 관한 위젯(DateTime/duration,difference) (0) | 2023.04.21 |