Flutter
[Flutter] Conditional import 하는 방법.
개발_블로그
2025. 1. 1. 17:04
Flutter 사용 시 dart.html 같은 Web 에서만 build 되는 것을 import 할 때 사용하는 방법이다.
간단한 예제로 아래와 같은 트리로 설명해보자면.
lib /
main.dart
web.dart
app.dart
platform_screen.dart
1. platform_screen.dart 파일을 생성.
export 'app.dart' if (dart.library.html) 'web.dart';
2. app.dart 파일 생성. ( 파일은 app.dart 이고 class 명은 PlatfromWidget )
class PlatformWidget extends StatelessWidget {
const PlatformWidget({super.key});
@override
Widget build(BuildContext context) {
return Text("앱");
}
}
3. web.dart 파일 생성. ( 파일은 app.dart 이고 class 명은 PlatfromWidget )
import 'dart:html' as html;
import 'dart:ui_web' as ui_web;
import 'package:flutter/material.dart';
class PlatformWidget extends StatefulWidget {
const PlatformWidget({super.key});
@override
State<PlatformWidget> createState() => _WebState();
}
class _WebState extends State<PlatformWidget> {
late html.IFrameElement _iframeElement;
late html.EventListener _eventListener;
@override
void initState() {
super.initState();
_initIFrameElement();
_initEventListener();
}
@override
Widget build(BuildContext context) {
return SafeArea(
child: Scaffold(
body: _naverMapWidget(),
),
);
}
4. main.dart 파일에 platform_screen.dart 를 import 후 PlatformWidget() 넣어준다.
import 'platform_screen.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
useMaterial3: true,
),
home: const PlatformWidget()
);
}
}