seong
Flutter - Flutter with Python (2) 파이썬 결과 값 View로 보여주기 본문
이전 포스팅 : https://seong9566.tistory.com/378
실행 되는 방식은 아래와 같다.
1. 파이썬 결과 값을 저장할 폴더 및 파일 생성(create)
2. Flutter ->파이썬 스크립트 호출
3. 파이썬 스크립트 실행
4. 파이썬에서 스크립트 실행 후 결과 값을 생성한 파일에 write
5. Flutter에서 생성된 파일 read
위 방식으로 Flutter <-> Python간 데이터를 주고 받았다.
1. Flutter 코드
Future<void> initPlatformState() async {
String? pyResult;
// 결과 값 저장할 폴더 생성(create)
Directory tempDir =
await (await getTemporaryDirectory()).createTemp("seong_test");
print("tempDir: ${tempDir.path}");
// 폴더 안에 output.text라는 파일 생성
String out = path.join(tempDir.path, "output.text");
print("out: ${out}");
// 파이썬 코드 실행 및 생성한 파일 경로 전달
// RESULT_VAULE를 넣으면 원하는 변수 값을 python으로 전달 할 수 있다.
await SeriousPython.run(
_pyFileName,
environmentVariables: {
"RESULT_FILENAME": out,
},
sync: true,
);
// 생성된 파일에서 데이터 read
var outFile = File(out);
print("outFile: ${outFile.path}");
if (await outFile.exists()) {
pyResult = await outFile.readAsString();
/// 데이터 모두 read했으면 생성된 파일 삭제
outFile.delete();
tempDir.delete();
}
if (!mounted) return;
setState(() {
_pyResult = pyResult ?? "Error: No output from Python script";
});
}
2. Python 코드
데이터 write할 때 type에 주의 해야함
import os
// 1~10 까지 더하는 함수
def sum_numbers():
total = 0
for i in range(1, 11):
total += i
return total
result = sum_numbers()
print("1부터 10까지의 합:", result)
// Flutter에서 생성한 파일 명
result_filename = os.getenv("RESULT_FILENAME")
// 파일을 열어 데이터를 write
with open(result_filename, "w") as f:
f.write(str(result))
실행 결과
- 버튼 클릭 후 결과 값을 Result에 불러옴!
실행 후 경로에 들어가서 폴더와 파일이 올바르게 생성 되어 있는지도 확인
Git 코드
https://github.com/seong9566/flutter_with_python
'Flutter > Flutter' 카테고리의 다른 글
Flutter - BottomNav 더블 탭시 화면의 스크롤 가장 위로 보내기 (0) | 2024.08.09 |
---|---|
Flutter - 사용자 설정 폰트 크기 무시하기 (0) | 2024.07.08 |
Flutter - Flutter with Python (1) (0) | 2024.05.17 |
Flutter - flutter_foreground_task (0) | 2024.05.14 |
Flutter - Tooltip 위젯 (0) | 2024.04.18 |