휴대폰인지 패드인지 확인하기 위한 작업이 필요하다.
다음 코드를 봅시다.
_screenSize() { MediaQueryData mediaQueryData = MediaQuery.of(context); // 화면의 가로 및 세로 크기를 가져옵니다. double screenWidth = mediaQueryData.size.width; double screenHeight = mediaQueryData.size.height; if(screenWidth > 600) { print('pad 에서 접속했습니다. 가로모드만 적용'); } else { print('phone 에서 접속했습니다. 세로모드만 적용'); } }
해설
MediaQueryData를 사용하여 현재 디바이스의 화면 크기 정보를 가져옵니다.
screenWidth와 screenHeight 변수를 사용하여 화면의 가로 및 세로 크기를 추출합니다.
if 문을 사용하여 화면의 가로 크기(screenWidth)가 600 이상이면 "pad" 아니면 "phone" 출력합니다.
전체소스
import 'dart:convert'; import 'package:flutter/services.dart'; import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:webview_flutter/webview_flutter.dart'; import 'package:http/http.dart' as http; import 'package:webview_flutter_onlyweb/providers/news_provider.dart'; import 'models/news.dart'; /** * https://cholol.tistory.com/568 * https://newsapi.org/ * API : cbccb7215b1c41b89976b36fff52509b * GET https://newsapi.org/v2/top-headlines?country=us&apiKey=cbccb7215b1c41b89976b36fff52509b */ Future<void> main() async { await initialization(null); runApp( const MaterialApp( home: WebViewApp(), ), ); } Future initialization(BuildContext? context) async { await Future.delayed(const Duration(seconds: 0)); } class WebViewApp extends StatefulWidget { const WebViewApp({super.key}); @override State<WebViewApp> createState() => _WebViewAppState(); } class _WebViewAppState extends State<WebViewApp> { late final WebViewController controller; @override void initState() { super.initState(); controller = WebViewController() ..setJavaScriptMode(JavaScriptMode.unrestricted) ..setBackgroundColor(const Color(0x00000000)) ..addJavaScriptChannel('JsBridge', onMessageReceived: (JavaScriptMessage message) { /* javascript send() 클릭시 여기로 전송된다 message 는 json 형태 */ _web2flutter(message); }) ..setUserAgent("naya mobiie_wv") ..loadRequest( Uri.parse('http://220.72.212./flutter_index2.html'), ); NewsProvider newsProvider = NewsProvider(); newsProvider.postRequest(); } _web2flutter(JavaScriptMessage message) async { /* * json 형태를 객체로 변경 */ Map<String, dynamic> parsedJson = jsonDecode(message.message); var action = parsedJson['action']; var inputHexString = parsedJson['hexString']; print('acton:'+action); print('inputHexString:'+inputHexString); var receivedHexString = ''; _flutter2web('플러터에서 보낸 메세지 입니다. '); } // flutter -> web 전송 _flutter2web(msg) async { controller.runJavaScript("flutter2web('$msg')"); } dd(String str) { if (kDebugMode) { print(str); } } @override Widget build(BuildContext context) { _screenSize(); return Scaffold( body: WebViewWidget( controller: controller, ), ); } _screenSize() { MediaQueryData mediaQueryData = MediaQuery.of(context); // 화면의 가로 및 세로 크기를 가져옵니다. double screenWidth = mediaQueryData.size.width; double screenHeight = mediaQueryData.size.height; if(screenWidth > 600) { print('pad 에서 접속했습니다. 가로모드만 적용'); } else { print('phone 에서 접속했습니다. 세로모드만 적용'); } print('>>screenWidth'); print(screenWidth); print(screenHeight); } }
'프로그래밍 > flutter' 카테고리의 다른 글
[flutter] 안드로이드 apk 만들기 (0) | 2023.10.19 |
---|---|
[flutter] 화면 방향을 세로/가로 고정 방법 (0) | 2023.09.26 |
[flutter] 앱 아이콘 변경 (0) | 2023.08.16 |
[flutter] 스플래쉬(splash) 화면 추가 (0) | 2023.08.16 |
[flutter] 백버튼(뒤로가기) 클릭시 "종료하시겠습니까?" 다이얼로그 추가 (0) | 2023.08.16 |