如何使两个Frames分别占据窗口可用宽度的50%?
现在,我只是让内容决定宽度并使用pack(side=Tkinter.LEFT),显然这并不能使它们都相等。
我尝试使用grid()代替,但是当我调整窗口大小时却无法调整它们的大小。
编辑
请注意,我希望能够调整窗口的大小,并且框架的大小应始终调整为宽度的50%。
Runner -> General在我的 iOS 项目中,我在选项卡中的部分下有以下设置Identity:
Version: $(FLUTTER_BUILD_NAME)
Build: $(FLUTTER_BUILD_NUMBER)
Run Code Online (Sandbox Code Playgroud)
这与创建一个全新的 Flutter 项目时相同。然而,当我准备创建一个存档来发布我的应用程序时,Xcode 抱怨这些字段丢失或不正确(我不记得确切的错误消息)。
我构建发布应用程序的唯一方法是将它们更改为硬编码字符串 - 即分别为1.0.0和1。什么可能导致此问题?必须记住为每个版本更新这些内容会很麻烦,而且我不应该这样做,对吗?
我需要将一个由 8 个字符的十六进制子字符串组成的字符串转换为一个整数列表。
例如,我可能有字符串
001479B70054DB6E001475B3
Run Code Online (Sandbox Code Playgroud)
它由以下子串组成
001479B7 // 1341879 decimal
0054DB6E // 5561198 decimal
001475B3 // 1340851 decimal
Run Code Online (Sandbox Code Playgroud)
我目前正在使用convert.hex首先将字符串转换为 4 个整数的列表(因为convert.hex只处理解析 2 个字符的十六进制字符串),然后将它们相加/相乘:
String tmp;
for(int i=0; i<=myHexString.length-8; i+=8){
tmp = myHexString.substring(i, i+8);
List<int> ints = hex.decode(tmp);
int dec = ints[3]+(ints[2]*256+(ints[1]*65536)+(ints[0]*16777216));
}
Run Code Online (Sandbox Code Playgroud)
有没有更有效的方法来做到这一点?
我想以与我的同事不同的方式配置我们的日志库,并且我不想冒险检查我的本地配置,即:
void main() {
LOG.minLevel = Logger.VERBOSE;
LOG.showSymbols = false;
runApp( RestartWidget(child: ResponsApp()) );
}
Run Code Online (Sandbox Code Playgroud)
我当然可以在每次提交时手动排除这些行,但我迟早会忘记这样做。
防止此代码意外签入并在我同事的计算机上运行的最佳方法是什么?有什么方法可以默默地检查 Flutter/Dart 中的环境变量(类似于kDebugMode/kReleaseMode但我只能在本地计算机上自定义)?
顺便说一句,我正在使用 IntelliJ。
当我在 Google Play 上更新我的应用程序时,我看到了一条关于我以前从未见过的名为“敏感应用程序权限”的警告。它似乎与通话、短信、位置和文件访问权限有关。
Google Play 上的权限声明表说
位置权限
未启动 您的应用不合规
我的应用程序使用Flutter Location 插件和Flutter Map 插件。我在清单中请求INTERNET和ACCESS_FINE_LOCATION权限:
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
Run Code Online (Sandbox Code Playgroud)
进一步阅读在后台请求访问位置提供了有关 Google Play 政策即将更改的更多信息:
审查和批准变更的时间表
从 2020 年 9 月 30 日开始,我们将开始审查请求在后台访问位置信息的应用。如果您的应用受到影响,您会在 Play 管理中心的应用内容页面(政策 > 应用内容)上收到通知,以完成权限声明表。
从 2021 年 1 月 18 日开始,所有提交到 Google Play 的新应用(2020 年 4 月 16 日之后首次发布)都需要在后台访问位置获得批准才能上线。
从 2021 年 3 月 29 日开始,所有在后台访问位置的现有应用(2020 年 4 月 16 日之前首次发布)都需要获得批准,否则将从 Google Play …
android android-location google-play android-permissions flutter
好的,所以我知道如果我有一个网站和一个应用程序大致显示相同的内容,应用程序索引可用于在应用程序中打开指向该网站的链接(如果用户安装了它)。
为此,需要在网页中指定深层链接,以指定应用程序和内容的 URI。这也让 Googlebot 知道网页到应用程序的意图连接,以便它可以在搜索结果等中显示内容(即indexing)。还可以指定处理网站 URL 的意图过滤器,因此指向您网站的链接可以自动打开应用程序并在那里显示内容,甚至无需在浏览器中打开网页。
我在理解上遇到问题的部分是,在 Android 应用程序中,您添加了“相反”的代码(可以由 Android Studio 自动生成)。
例如
@Override
public void onStart() {
super.onStart();
// ATTENTION: This was auto-generated to implement the App Indexing API.
// See https://g.co/AppIndexing/AndroidStudio for more information.
client.connect();
Action viewAction = Action.newAction(
Action.TYPE_VIEW, // TODO: choose an action type.
"Main Page", // TODO: Define a title for the content shown.
// TODO: If you have web page content that matches this app activity's content,
// make sure this …Run Code Online (Sandbox Code Playgroud) android android-app-indexing google-app-indexing firebase-app-indexing
背景:有很多关于应用程序索引、应用程序链接、深层链接、深层应用程序链接等的信息 - 但几乎所有这些信息都只是重复相同的信息,而没有解释不同部分的目的,使用令人困惑的术语和只是似乎是为非技术人员(SEO 和营销人员)而不是开发人员编写的。
不管怎样,我正在实施应用程序索引和深度链接到我的应用程序中,我认为我已经(大部分)弄清楚了这一切。但后来我开始反思android-app://我添加到网站的那些链接的真正目的是什么,以及我是否真正正确地实施了它们。
我有一个 SSL 网站(我们称之为 )https://mywebsite.com和一个应用程序(我们称之为包名称 )com.my.app。
例如,https://mywebsite.com/foo/bar我有以下深层应用程序链接(有正确的术语吗??):
<link rel="alternate" href="android-app://com.my.app/http/mywebsite.com/foo/bar" />
Run Code Online (Sandbox Code Playgroud)
问题 1:我见过的所有示例都使用了这种格式,但是由于我的网站使用 SSL,我不应该像这样使用而不是https吗http?
<link rel="alternate" href="android-app://com.my.app/https/mywebsite.com/foo/bar" />
Run Code Online (Sandbox Code Playgroud)
问题 2:现在,如果我尝试在我的设备上打开这些链接之一,它不起作用。我尝试过使用二维码阅读器,将其输入浏览器,甚至使用 adb 将其作为意图数据发送。手机似乎android-app://根本不理解这个方案。我见过一些地方,人们建议使用 QR 代码测试这些链接,但我尝试了三种不同的 QR 应用程序,但似乎没有一个可以处理它们。那么我可以测试它们吗?如果可以的话,如何测试?
问题3:这些链接的实际目的是什么?我的应用程序使用意图过滤器进行处理https://mywebsite.com/foo/bar,那么在我的网页中提供链接的实际目的是什么android-app://com.my.app/http/mywebsite.com/foo/bar?
android deep-linking android-app-indexing applinks firebase-app-indexing
如何将a转换float为a String并始终获取指定长度的结果字符串?
例如,如果我有
float f = 0.023f;
Run Code Online (Sandbox Code Playgroud)
我想要一个6个字符的字符串,我想得到0.0230.但是,如果我想将其转换为4个字符的字符串,结果应该是0.02.此外,-13.459限制为5个字符的值应返回-13.4,并返回10个字符-13.459000.
这就是我现在正在使用的东西,但是要做到这一点还有更漂亮的方法......
s = String.valueOf(f);
s = s.substring(0, Math.min(strLength, s.length()));
if( s.length() < strLength )
s = String.format("%1$-" + (strLength-s.length()) + "s", s);
Run Code Online (Sandbox Code Playgroud) 我发现使用官方 Flutter 本地化插件的本地化过程很麻烦。要显示我必须调用的本地化字符串Localization.of(context).myAppTitle- 在具有大量本地化字符串的巨大嵌套 Widget 树中并不完全光滑或易于浏览。更不用说它看起来很丑。
有没有办法让使用更好?例如,我可以使用全局变量或带有Localization实例成员的静态类来使访问更容易吗?例如声明一个顶级Localization变量
// Somewhere in the global scope
Localization l;
// main.dart
class _MyAppState extends State<MyApp>{
@override
void initState() {
super.initState();
getLocaleSomehow().then((locale){
l = Localization(locale);
setState((){});
});
}
}
Run Code Online (Sandbox Code Playgroud)
然后我可以简单地打电话
Text(l.myAppTitle)
Run Code Online (Sandbox Code Playgroud)
所以从本质上讲,我要问的是“不打电话有Localization.of(context)什么危险和/或缺点?”
如果我真的需要使用该.of(BuildContext)方法来访问Localization实例 - 我至少可以将它存储在我的StatefulWidget? 我在想像
class DetailsPage extends StatefulWidget{
Localization _l;
@override
Widget build(BuildContext context) {
_l = Localization.of(context);
// ... build widgets ...
}
}
Run Code Online (Sandbox Code Playgroud)
或者有没有其他方法可以让本地化不那么麻烦?
我试图使用Dio 插件调用 REST 服务,但不断收到HTTP 400响应代码。我认为通过将内容类型和响应类型选项设置为 JSON,我做的一切都是正确的:
Response response = await Dio().get(
'https://api.example.com/v1/products/$productId',
queryParameters: {},
options: Options(
contentType: ContentType.json,
responseType: ResponseType.json,
headers: {'Authorization': 'Bearer $MY_API_KEY'}
),
);
Run Code Online (Sandbox Code Playgroud)
然而,事实证明我Content-Type还需要添加一个标头:
headers: {'Authorization': 'Bearer $MY_API_KEY'}, 'Content-Type': 'application/json' };
Run Code Online (Sandbox Code Playgroud)
所以现在我很困惑 - 这个contentType选项到底有什么作用?我认为这类似于Content-Type手动设置标题?
flutter ×6
dart ×4
android ×3
applinks ×1
deep-linking ×1
google-play ×1
hex ×1
http ×1
java ×1
python ×1
python-2.7 ×1
rest ×1
tkinter ×1
xcode ×1