我开发了一个带有 Go 后端的 Flutter 应用程序,在使用模拟器时可以按预期运行。但是,当我尝试在物理 Android 设备上运行它时遇到问题。具体来说,应用程序无法使用代码中指定的IP地址连接到后端服务器。
应用程序的预期行为是连接到后端服务器并成功执行 API 调用,就像在模拟器中一样。不幸的是,当我尝试直接在手机浏览器上访问“http://1##.###.#.#:8080”时,无法建立连接。这让我怀疑可能存在网络配置或权限问题,导致应用程序在物理设备上运行时无法与我的后端通信。
以下是我的 Flutter 项目的相关片段:
class AppConstants{
static const String BASE_URL = "http://1##.###.#.#:8080";
}
以及
AndroidManifest.xml
中网络相关的配置:
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.flutter_golang_yt">
<application
android:label="Todogo"
android:icon="@mipmap/ic_launcher">
<activity
android:name=".MainActivity"
android:exported="true"
android:theme="@style/LaunchTheme"
android:hardwareAccelerated="true"
android:windowSoftInputMode="adjustResize">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
</application>
</manifest>
也许您应该将后端部署在 Heroku 这样的服务上。在我看来,您的后端在模拟器上运行,因为它能够连接到您计算机上的本地主机。但是,您的物理手机无法连接到本地主机。