목록Flutter (23)
일모도원(日暮途遠) 개발자

Flavor를 만드는 경우는 보통 아래와 같다. 개발용, 릴리즈용, qa용으로 배포가 필요할때.유료, 무료(광고 포함, 기능 제한)을 할때. 안드로이드는 앱 모듈에 있는 build.gradle에 있는 productFlavors를 이용하여 flavor를 만든다. iOS는 두가지 방법이 있는데, flavor별로 타겟을 만들거나, 타겟은 한개(Runner)인데 스킴과 Configuration(Debug, Release등)을 각 flavor별로 만들면 된다. 각각 Native로 개발할때는 안드로이드는 안드로이드 스튜디오의 GUI를, iOS는 XCode의 gui를 이용하고 또 소스내에서 바로 어느 flavor인지 쉽게 구분할수 있는데, 플러터로 할때는 Dart코드에서 어떤 Flavor인지 구분을 해야한다. 앱이름..
flame오디오를 사용해서 총알이 발사될때 소리를 내게 했는데, 점점 소리나는 시점이 늦어지더니 어느순간 총알이 나가도 소리는 안나간다. 자세히 보니 소리가 아주 늦게 나오는것이다. 반복되는 소리는 AudioPool을 쓰라고 해서 이런씩으로 쓰고 있었다.AudioPool? _laserPool;_laserPool = await AudioPool.createFromAsset( path: 'sfx_laser1.ogg', minPlayers: 1, maxPlayers: 5, audioCache: FlameAudio.audioCache,);await _laserPool?.start() 디버깅을 해보니 음원파일은 1.2초짜리이고 재생은 0.6초 단위로 계속 재생을 시키고 있었다. maxPlayers를 5정..

Flame으로 게임 개발하는중에 Overlay로 뷰를 띄우니 아래처럼 빨간 색에 노란 밑줄이 보인다. class GameOverPopup extends StatelessWidget { final RogueShooterGame game; const GameOverPopup({super.key, required this.game}); @override Widget build(BuildContext context) { return Center( child: Container( width: 300, padding: const EdgeInsets.all(24), decoration: BoxDecoration( color: Colors.wh..

https://docs.flame-engine.org/latest/flame/router.html import 'package:flame/components.dart';import 'package:flame/effects.dart';import 'package:flame/events.dart';import 'package:flame/game.dart';import 'package:flame/geometry.dart';import 'package:flame/rendering.dart';import 'package:flutter/rendering.dart';class RouterGame extends FlameGame { late final RouterComponent router; @override ..
easy_localization과 GetX를 사용하고 있는데, 메뉴 언어를 영어, 한국어로 변경시 반영이 잘 안된다. 앱을 껏다 켰다해야 확실히 반영이 된다. 기존코드는 아래처럼 context.setLocale만 사용했었는데,context.setLocale(newLanguage.locale.toLocale(separator: '-')); 아래처럼 Get.updateLocale까지 같이 해주니 잘되었다.final newLocale =newLanguage.locale.toLocale(separator: '-');await context.setLocale(newLocale); // change `easy_localization` localeGet.updateLocale(newLocale); // change..

Dialog에 마이크 버튼이 가운데 있는데 오른쪽에 스피커 버튼을 두고 싶었는데, 다른방법을 몰라서 Row로 스피커를 양쪽에 배치하고 하나는 숨겨버리고 반응도 안되게 하였다. (IgnorePointer위젯의 child에 Opacity위젯을 쓰면서 투명도를 0으로 줌) 일단 내가 원하는 형태대로 나와서 이렇게 쓴다. Row( mainAxisAlignment: MainAxisAlignment.spaceAround, children: [ Gap(8), IgnorePointer(ignoring: true, child: Opacity(opacity: 0.0, child: VocaSpeakerB..

플러터앱을 안드로이드용 디버그 모드에서 잘실행되던게 릴리즈 모드에서 하니 아래처럼 에러가 난다.Running Gradle task 'assembleRelease'... 12.5sError: Gradle build failed to produce an .apk file. It's likely that this file was generated under /Users/dalnimbest/Documents/workspace/Flutter/helpee/build, but the tool couldn't find it. apk는 잘 만들었는데, helpee/build 밑에서 못찼고 있단다. helpee는 프로젝트 명이고, 난 helpee프로젝트에 flavor가 여러개..

플러터앱을 안드로이드용으로 디버그 모드에서 잘 테스트하다가 릴리즈 모드로 컴파일하니 아래 에러가 나온다. 에러코드를 잘 읽어보면 R8을 실행중에 에러가 났는데, 아래클래스들이 Missing class라고 나온다.com.google.mlkit.vision.text.chinese.ChineseTextRecognizerOptionscom.google.mlkit.vision.text.chinese.DevanagariTextRecognizerOptionscom.google.mlkit.vision.text.chinese.JapaneseTextRecognizerOptionscom.google.mlkit.vision.text.chinese.KoreanTextRecognizerOptions R8은 Google이 개발..