Open2

Flutterでアプリ開発時にハマったことまとめ

harrythecodeharrythecode

はまったこと1

HTTP通信ができない。

ClientException with SocketException: Connection failed (OS Error: Operation not permitted, errno = 1), address = example.com, port = 443,

  • 解決策: ios / android / macos それぞれで通信の許可設定を別途入れる
  • macos
$ git diff
diff --git a/macos/Runner/DebugProfile.entitlements b/macos/Runner/DebugProfile.entitlements
index dddb8a3..08c3ab1 100644
--- a/macos/Runner/DebugProfile.entitlements
+++ b/macos/Runner/DebugProfile.entitlements
@@ -8,5 +8,7 @@
        <true/>
        <key>com.apple.security.network.server</key>
        <true/>
+       <key>com.apple.security.network.client</key>
+       <true/>
 </dict>
 </plist>
diff --git a/macos/Runner/Release.entitlements b/macos/Runner/Release.entitlements
index 852fa1a..ee95ab7 100644
--- a/macos/Runner/Release.entitlements
+++ b/macos/Runner/Release.entitlements
@@ -4,5 +4,7 @@
 <dict>
        <key>com.apple.security.app-sandbox</key>
        <true/>
+       <key>com.apple.security.network.client</key>
+       <true/>
 </dict>
 </plist>
  • ios
diff --git a/ios/Runner/Info.plist b/ios/Runner/Info.plist
index 663628b..07c1e56 100644
--- a/ios/Runner/Info.plist
+++ b/ios/Runner/Info.plist
@@ -45,5 +45,18 @@
 	<true/>
 	<key>UIApplicationSupportsIndirectInputEvents</key>
 	<true/>
+	<key>NSAppTransportSecurity</key>
+	<dict>
+		<key>NSExceptionDomains</key>
+		<dict>
+			<key>許可するドメイン</key>
+			<dict>
+				<key>NSExceptionAllowsInsecureHTTPLoads</key>
+				<true/>
+				<key>NSIncludesSubdomains</key>
+				<true/>
+			</dict>
+		</dict>
+	</dict>
 </dict>
 </plist>

iosのこれがいるかどうかは不明。

はまったこと2

プロジェクト名変えられない。何も考えずに「flutter create アプリ名」で始めると「com.example.アプリ名」になってしまう。

  • 解決策1(おすすめ): 素直に作り直す - flutter create --org ドメイン名 アプリ名
  • 解決策2(どうしても無理な場合): 以下の通り進める

https://zenn.dev/tsukatsuka1783/articles/flutter_change_app_name

はまったこと3

Macで開発中 SQLite使ってるとどこに保存されてるかがわからない。

  • 解決策: ~/Library/Containers/ドメイン名.アプリ名/Data/Documents の下にある。
harrythecodeharrythecode

はまったこと4

アイコンどうやって変えるのか。

pubspec.yaml
dev_dependencies:
  flutter_launcher_icons: "^0.13.1"

flutter_launcher_icons:
  android: true
  ios: true
  image_path: "assets/icon/icon.png"

上記を設定後、terminal上で以下を実行。

flutter pub get
flutter pub run flutter_launcher_icons