티스토리 뷰

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()
    );
  }
}
반응형
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
글 보관함