class ClassName extends StatefulWidget {
@override
_MyAppState createState() => _MyAppState();
}
class _MyAppState extends State<ClassName> {
String _msg = 'Welcome to WillPopScope World';
@override
initState() {
super.initState();
}
@override
Widget build(BuildContext context) {
return WillPopScope( // <- WillPopScope로 감싼다.
onWillPop: () {
setState(() {
_msg = "You can not get out of here! kkk";
});
return Future(() => false);
},
child: Scaffold(
appBar: AppBar(
title: Text('text'),
automaticallyImplyLeading: false, // 뒤로가기 버튼 없애기
),
body: Container(
child: Text(''),
),
),
);
}
}
매개변수를 State<StatefulWidget>으로 넘겨주려면 어떻게 할까?
StatefulWidget 의 첫번째 클래스에 변수를 정의하고
두번째 클래스에서 widget.파라미터 이름으로 그 값을 사용할 수 있고 class의 상단엔서 초기화해주면 그 이후 코드에서 사용할 수 있다는데 .. 무슨 소리인지?
https://stackoverflow.com/questions/50818770/passing-data-to-a-stateful-widget-in-flutter
class UserData extends StatefulWidget {
final String clientName;
final int clientID;
const UserData(this.clientName,this.clientID);
@override
UserDataState createState() => UserDataState();
}
class UserDataState extends State<UserData> {
@override
Widget build(BuildContext context) {
// Here you direct access using widget
return Text(widget.clientName);
}
}
// 화면 이동 시 값을 전달
Navigator.of(context).push(MaterialPageRoute(builder: (context) => UserData("WonderClientName",132)));
이런 글도 있다.
import 'package:flutter/material.dart';
import 'second_screen.dart';
class FirstScreen extends StatelessWidget{
@override
Widget build(BuildContext context){
return Scaffold(
appBar: AppBar(),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text('This is First Screen'),
ElevatedButton(onPressed: (){
Navigator.of(context).push(
MaterialPageRoute(
builder: (BuildContext context) => SecondScreen(screenData: 'MetaData there is',),
),
);
}, child: Text('Go to Second Screen'))
],
),
),
);
}
}
import 'package:flutter/material.dart';
class SecondScreen extends StatelessWidget{
final String? screenData;
SecondScreen({required this.screenData});
@override
Widget build(BuildContext context){
return Scaffold(
appBar: AppBar(),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text('screenData: ' + screenData!),
OutlinedButton(onPressed: (){
Navigator.of(context).pop();
}, child: Text('Go to First Screen '))
],
),
),
);
}
}
플러터에서 앱 이동시 데이터의 값을 전달하려고 한다면
먼저 first_screen, second_screen 으로 화면 이동 버튼을 구현.
그리고 나서 first_screen에 secondScreen을 임포트
.
그리고 SecondScreen에 데이터의 종류를 선언,, 출력할 위치를 지정
그러면 자동으로 ristScreen 함수 내에서 오류가 발생하는데 거기에 데이터의 이름과 동시에 값을 작성
위 소스코드를 참고!!.
728x90
반응형
'IT 정보 > 플러터 flutter' 카테고리의 다른 글
플러터 상단 메뉴 홈바 appbar (0) | 2023.10.23 |
---|---|
플러터 Textfield, Textformfield (0) | 2023.10.16 |
플러터 Container Padding SizedBox등 범위 잡는 위젯 (0) | 2023.09.18 |
플러터 Material Design으로 기본 화면 구성 (0) | 2023.09.10 |
플러터 flutter 화면이동 기본 형태 + Back Button 막기 (0) | 2023.09.10 |
댓글