如何在flutter中删除调试横幅?
我正在使用flutter screenshot,我希望屏幕截图没有横幅.现在确实有.
请注意,我收到not supported for emulator了配置文件和发布模式的消息.
由于各种原因,有时会build再次调用我的小部件的方法.
我知道这是因为父母更新了.但这会导致不良影响.导致问题的典型情况是使用FutureBuilder这种方式:
@override
Widget build(BuildContext context) {
return FutureBuilder(
future: httpCall(),
builder: (context, snapshot) {
// create some layout here
},
);
}
Run Code Online (Sandbox Code Playgroud)
在此示例中,如果再次调用构建方法,则会触发另一个http请求.这是不受欢迎的.
考虑到这一点,如何处理不需要的构建?有什么方法可以阻止构建调用?
我已经意识到可以使用普通函数创建小部件而不是子类化StatelessWidget.一个例子是这样的:
Widget function({ String title, VoidCallback callback }) {
return GestureDetector(
onTap: callback,
child: // some widget
);
}
Run Code Online (Sandbox Code Playgroud)
这很有趣,因为它需要的代码远远少于完整的类.例:
class SomeWidget extends StatelessWidget {
final VoidCallback callback;
final String title;
const SomeWidget({Key key, this.callback, this.title}) : super(key: key);
@override
Widget build(BuildContext context) {
return GestureDetector(
onTap: callback,
child: // some widget
);
}
}
Run Code Online (Sandbox Code Playgroud)
所以我一直在想:除了创建小部件的函数和类之间的语法之外还有什么区别吗?使用函数是一个好习惯吗?
这可能听起来很简单但是:我们怎样才能在一个多线可编辑的文本字段中颤动?TextField仅适用于单行.
编辑:一些精确因为看起来不太清楚.虽然您可以设置多行来虚拟包装文本内容,但它仍然不是多行的.它是一行显示为多行.如果你想做点什么
喜欢
这个.
那么你不能.因为您无权访问"输入"按钮.没有输入按钮,没有多行.
自 Flutter 1.12 发布以来,我的以下代码:
static MyInheritedWidget of(BuildContext context) {
return context.inheritFromWidgetOfExactType(MyInheritedWidget) as MyInheritedWidget;
}
Run Code Online (Sandbox Code Playgroud)
警告如下:
'inheritFromWidgetOfExactType' 已弃用,不应使用。改用dependOnInheritedWidgetOfExactType。此功能在 v1.12.1 之后被弃用。尝试用替换来替换弃用成员的使用。
但是当我尝试更换它时,它不起作用:
static MyInheritedWidget of(BuildContext context) {
return context.dependOnInheritedWidgetOfExactType(MyInheritedWidget) as MyInheritedWidget;
}
Run Code Online (Sandbox Code Playgroud)
有人知道怎么做吗?谢谢!
Dart 提供了一个FutureOr类,允许编写:
FutureOr<int> future;
future = 42; // valid
future = Future.value(42); // also valid
Run Code Online (Sandbox Code Playgroud)
如果可以同步读取值,我认为FutureOr将有助于消除由事件循环引起的不必要的延迟。
但事实似乎并非如此,如下所示:
import 'dart:async';
void main() async {
print('START');
futureOrExample();
print('END');
}
void futureOrExample() async {
FutureOr<int> futureOr = 42;
print('before await');
await futureOr;
print('end await');
}
Run Code Online (Sandbox Code Playgroud)
打印:
START
before await
END
end await
Run Code Online (Sandbox Code Playgroud)
当我期望:
START
before await
end await
END
Run Code Online (Sandbox Code Playgroud)
在这种情况下,为什么FutureOr(或更普遍地await 42)以这种方式工作?
同样,在这种情况下FutureOr的目的是什么,因为它产生与Future相同的结果?
我知道我可以使用SynchronousFuture来达到预期的结果,但我只是想了解FutureOr的用途。
默认情况下,flutter会在ListView/ GridView/ ...上为Android手机上的过度滚动添加一个发光效果
我想完全或在一个特定的可滚动上删除此效果.我知道我可以改变ScrollPhysicsBounce/Clamp之间的变化.但这实际上并没有消除发光效果.
我能做什么 ?
我正在使用Flutter SDK开发应用程序.当我使用TextField小部件时,我将其聚焦,下划线变为蓝色.我需要将此颜色更改为红色,我该怎么办?
我需要改变的截图.我只想更改下划线,而不是标签颜色.

React-native和Flutter技术上有什么区别?
两种技术似乎都做了相同的事情,Flutter甚至承认它从React:faq中获取灵感
当它们列出相同的功能并具有几乎相同的语法(StatefulWidgetvs Componentclass)时,这一点就更加明显了.
类似于AngularDart是Angular的Dart实现; 假设Flutter是React的Dart实现是正确的吗?
我开发了自己的自定义小部件,用于其他视图.在这个自定义小部件中,我有一个存储信息的类属性,假设这是一个获取小部件内新项的列表.现在我想从我的主要小部件的级别获取此列表中的项目.
怎么做?我不想创建这样的变量:var customWidget = MyCustomWidget()然后,获取内部变量customWidget.createState().myList- 我认为这是一个可怕的解决方案(我不确定它是否会起作用).将列表传递给我的自定义小部件的构造函数看起来非常难看.
有没有其他方法来获得其他小部件的状态?