我希望能够在小部件完成构建/加载后运行功能,但我不确定如何运行。
我目前的用例是检查用户是否经过身份验证,如果没有,则重定向到登录视图。我不想在登录视图或主视图之前检查并推送,它需要在主视图加载后发生。
有什么我可以用的吗?
有3种可能的方式:
1) WidgetsBinding.instance.addPostFrameCallback((_) => yourFunc(context));
2) Future.delayed(Duration.zero, () => yourFunc(context));
3) Timer.run(() => yourFunc(context));
至于上下文
,我需要它在脚手架中使用。(上下文)
在呈现我的所有小部件之后。
但在我看来,最好的办法是:
void main() async {
WidgetsFlutterBinding.ensureInitialized(); //all widgets are rendered here
await yourFunc();
runApp( MyApp() );
}
更新:颤振v1。8.4
上述两种代码现在都在运行:
工作:
WidgetsBinding.instance
.addPostFrameCallback((_) => yourFunction(context));
工作
import 'package:flutter/scheduler.dart';
SchedulerBinding.instance.addPostFrameCallback((_) => yourFunction(context));
你可以用
https://github.com/slightfoot/flutter_after_layout
它在布局完成后仅执行一次函数。或者只是看看它的实现并将其添加到您的代码中:-)
基本上
void initState() {
super.initState();
WidgetsBinding.instance
.addPostFrameCallback((_) => yourFunction(context));
}
我正在构建一个聊天应用程序flutter页面,我的Textfield/Send按钮行不断消失,我得到以下错误... 'package:flutter/src/rendering/box.dart':断言失败:第1446行pos 12:'havs size':RenderBox未布局:renderpointerlistener#da9fd needs-layout needs-paint 该页面构建
我很熟悉flutter中的无状态和有状态小部件,但我很好奇为什么我们不将有状态小部件定义为无状态小部件?为什么我们需要声明两个不同的类,一个用于createstate方法,一个用于实际的状态实现?
我得到下面的异常,而在Android Studio运行flutter代码。 I/颤振(5360):══╡ WIDGETS库捕获到异常╞═══════════════════════════════════════════════════════════ I/flatter(5360):在构建文本(“xyz”)时抛出以下断言:I/flatter(5360):未找到方向性小部件。I/flatter(5
我正在Linux Ubuntu上配置Flatter SDK 我在文件中为和指定了,但我在运行时收到此错误:
我向上看了看这里和酒吧。dev和flatter文档,但找不到(或者找不到我的查询)这个简单任务的任何解决方案。 我想显示一个,其字母从上到下排列,同时保持字母方向的默认值。因此,旋转的将不起作用。 我期望的结果是: 此外,我还需要将包装到下一行(本例中为列),需要一个高度参数来限制每列从上到下的字母数。 如果最后一部分太难实现,我愿意接受单列解决方案的想法。
在Flatter引入空安全特性之前,我能够有条件地在列表中添加小部件,如下所示: 是一个自制的过滤器,可以过滤掉空对象... 现在使用空安全性是不可能的,因为小部件列表严格来说必须是非空的。什么是更好的方法?