RouteSettings와 ModalRoute.of(context)?.settings.arguments를 통해 데이터를 전달하려면, Navigator.push와 MaterialPageRoute를 사용해 직접 RouteSettings의 arguments에 데이터를 설정할 수 있습니다.
import 'package:flutter/material.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
Widget build(BuildContext context) {
return MaterialApp(
home: FirstScreen(),
);
}
}
// 첫 번째 화면
class FirstScreen extends StatelessWidget {
Widget build(BuildContext context) {
final int dataToSend = 123; // 전달할 데이터
return Scaffold(
appBar: AppBar(
title: Text('First Screen'),
),
body: Center(
child: ElevatedButton(
onPressed: () {
// Navigator.push와 MaterialPageRoute로 두 번째 화면으로 이동
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => SecondScreen(),
settings: RouteSettings(
arguments: dataToSend, // 데이터 전달
),
),
);
},
child: Text('두 번째 화면으로 이동'),
),
),
);
}
}
// 두 번째 화면
class SecondScreen extends StatelessWidget {
Widget build(BuildContext context) {
// ModalRoute.of(context)?.settings.arguments로 데이터 수신
final int? receivedData = ModalRoute.of(context)?.settings.arguments as int?;
return Scaffold(
appBar: AppBar(
title: Text('Second Screen'),
),
body: Center(
child: Text(
receivedData != null ? '받은 데이터: $receivedData' : '데이터가 없습니다.',
style: TextStyle(fontSize: 20),
),
),
);
}
}
데이터 전달:
Navigator.push와 함께 MaterialPageRoute를 사용하여 SecondScreen으로 이동합니다.
MaterialPageRoute의 settings 매개변수에 RouteSettings(arguments: dataToSend)로 데이터를 전달합니다.
데이터 수신:
ModalRoute.of(context)?.settings.arguments를 통해 FirstScreen에서 전달한 데이터를 수신합니다.ModalRoute.of(context)?.settings.arguments 문구를 암기하고 사용하기를 권함)arguments는 Flutter에서 화면 간에 데이터를 전달할 때 사용하는 속성입니다. RouteSettings의 arguments를 통해 데이터를 다른 화면에 전달하고, 수신하는 화면에서는 ModalRoute.of(context)?.settings.arguments로 그 데이터를 가져올 수 있습니다.
데이터 전달:
arguments는 한 화면에서 다른 화면으로 데이터를 넘겨줄 때 사용됩니다.
예를 들어, 화면을 전환하면서 유저 ID, 메시지, 설정 값 등 필요한 정보를 arguments에 담아 전송할 수 있습니다.
데이터 수신:
새로운 화면으로 이동했을 때, ModalRoute.of(context)?.settings.arguments를 사용해 전달된 데이터를 받을 수 있습니다.
이 데이터를 이용해 화면에 필요한 정보나 상태를 표시하거나 사용할 수 있습니다.