플러터에서 Navigator를 사용하려면 context를 반드시 받아야 하는데,
만약 Widget을 method로 빼서 사용한다면 context를 인자로 넘겨줘야 할것이다.
하지만 그렇게 넘겨주게 되면 번거로운작업이 되고 햇갈릴 가능성이 농후하기 때문에 그때는 Builder Widget을 사용하면 된다.
사용방법은 기존에 있는 Widget최상단에서 Builder WIdget으로 감싼뒤
안에 builder속성에 context를 넣고 기존에 있는 Widget을 리턴하면
context를 사용할 수 있다.
예제는 아래와 같다.
Widget item() {
return Builder(builder: (context) {
return GestureDetector(
onTap: () {
Navigator.push(
context, MaterialPageRoute(builder: (context) => DetailPage()));
},
child: Container(
width: double.infinity,
height: 120,
child: Stack(
children: [
Positioned(
width: 120,
height: 120,
right: 0,
child: ClipRRect(
borderRadius: BorderRadius.circular(20),
child: Image.network(
'https://picsum.photos/200/300',
fit: BoxFit.cover,
),
),
),
Container(
width: double.infinity,
height: double.infinity,
margin: EdgeInsets.only(right: 100),
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.circular(20),
),
padding: EdgeInsets.all(20),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
'data',
style:
TextStyle(fontWeight: FontWeight.bold, fontSize: 14),
),
Spacer(),
Text(
'dighdighdighdighdighdighdighdighdighdighdighdighdighdighdigh',
overflow: TextOverflow.ellipsis,
style: TextStyle(color: Colors.grey, fontSize: 12),
),
SizedBox(
height: 4,
),
Text(
'2024/12/03 : 13:01:05',
style: TextStyle(color: Colors.grey, fontSize: 12),
),
],
),
),
],
),
),
);
});
}
728x90
'Programming > Flutter' 카테고리의 다른 글
[내일배움] flutter Mac에서 Firebase사용 설정방법 (0) | 2024.12.03 |
---|---|
[내일배움] flutter LIstView Seperated 사용 방법 (0) | 2024.12.03 |
[내일배움] Flutter WebView 종류 (0) | 2024.12.02 |
[내일배움] flutter TextField사용시 controller dispose방법 (0) | 2024.12.02 |
[내일배움] Flutter TextField 사용시 빈화면 클릭할때 키보드 비활성화 (0) | 2024.12.02 |