我想在我的Flutter应用程序中使用以下代码显示带有ListView.builder的SimpleDialog:
showDialog(
context: context,
builder: (BuildContext context) {
return new SimpleDialog(
children: <Widget>[
new FittedBox(
child: new ListView(
children: <Widget>[
new Text("one"),
new Text("two"),
],
),
)
],
);
},
);
Run Code Online (Sandbox Code Playgroud)
这给出了这个错误(抱歉,我无法将日志包装为代码,因为Stackoverflow抱怨代码太多了):
══╡通过渲染图书馆的例外情况╞═══════════════════════════════════════════════════════════════════════════════════════════════ =/flutter(4481):在performLayout()期间抛出以下断言:I/flutter(4481):RenderViewport不支持返回内部维度.I/flutter(4481):计算内在维度需要实例化视口的每个子节点,我/ flutter(4481):击败视口的懒惰点.I/flutter(4481):如果你只是想在主轴方向上收缩包装视口,可以考虑一个I/flutter(4481):RenderShrinkWrappingViewport渲染对象(ShrinkWrappingViewport小部件),它实现了I/flutter(4481) :没有实现内在维度API的效果.I/flutter(4481):...我/ flutter(4481):抛出了另一个异常:RenderBox没有布局:RenderPhysicalShape#83d92 relayoutBoundary = up2 NEEDS-PAINT I/flutter(4481):抛出另一个异常:' package:flutter/src/rendering/shifted_box.dart':断言失败:第310行pos 12:'child.hasSize':不是真的.I/flutter(4481):抛出了另一个异常:RenderBox没有布局:RenderPhysicalShape#83d92 relayoutBoundary = up2
我尝试使用具有特定高度和宽度的Container,它可以工作,但我希望ListView能够适应Dialog.
如何在SimpleDialog中包含ListView?
我正在尝试从Flutter中的不同小部件更改状态.例如,在以下示例中,我在几秒钟后设置状态.
这是代码:
class _MyAppState extends State<MyApp> {
int number = 1;
@override
void initState() {
super.initState();
new Future.delayed(new Duration(seconds: 5)).then((_) {
this.setState(() => number = 2);
print("Changed");
});
}
@override
Widget build(BuildContext context) {
return new Scaffold(
body: new Center(
child: new FlatButton(
color: Colors.blue,
child: new Text("Next Page"),
onPressed: () {
Navigator.of(context).push(new MaterialPageRoute(
builder: (BuildContext context) => new StatefulBuilder(builder: (BuildContext context, setState) =>new MySecondPage(number))
));
},
),
),
);
}
}
Run Code Online (Sandbox Code Playgroud)
我尝试使用一个InheritedWidget,但除非我将它包装在我的顶级窗口小部件周围,否则这将无法工作,这对我正在尝试做的事情是不可行的(上面的代码是我想要实现的简化).
有关实现这一目标的最佳方法的任何想法都在Flutter中?
使用source_gen堆栈制作代码生成器,如何制作生成代码的生成器,该代码将作为另一个生成器的输入(更具体地说json_serializable)?
例如,考虑:
class Example extends Generator {
@override
String generate(LibraryReader library, BuildStep buildStep) {
return '''
@JsonSerializable(nullable: false)
class Person {
final String firstName;
final String lastName;
final DateTime dateOfBirth;
Person({this.firstName, this.lastName, this.dateOfBirth});
factory Person.fromJson(Map<String, dynamic> json) => _PersonFromJson(json);
Map<String, dynamic> toJson() => _PersonToJson(this);
}
''';
}
}
Run Code Online (Sandbox Code Playgroud)
这是一个代码生成器的例子,它输出代码然后需要发送到 json_serializable
我该怎么做才能json_serializable在此处正确生成?
我看到一些人设法为其他操作系统构建比通常的Android/IOS更好的应用程序
我的问题很简单:如何?为mac/windows构建flutter应用程序的当前流程是什么?它没有必要准备好生产.实验就足够了
在颤动中,诸如Row/ ListView/之类的小部件Stack不能处理空子级。因此,如果我们要有条件地将小部件添加为子级,则通常需要执行以下操作:
Row(
children: <Widget>[
foo == 42 ? Text("foo") : Container(),
],
);
Run Code Online (Sandbox Code Playgroud)
但是,添加一个空容器感觉很奇怪。
另一个解决方案是where过滤器:
Row(
children: <Widget>[
foo == 42 ? Text("foo") : null,
].where((t) => t != null).toList(),
);
Run Code Online (Sandbox Code Playgroud)
这解决了空容器的问题,但是我们仍然有一个丑陋的三元组,编写起来很累。
有更好的解决方案吗?
我希望在Flutter中显示一个动画图片,无论其格式如何.事实是,目前似乎只有一种解决方案,video_loader.这仅适用于全屏,但不适合我的用例.
关于如何解决这个问题的任何想法?
使用 dart 可以通过注释作为类/函数定义的前缀,以便分析器将其解释为文档:
/// Some documentation for [Foo]
class Foo {
}
Run Code Online (Sandbox Code Playgroud)
但是如何使用参数来实现相同的行为呢?
我尝试了以下方法:
void myFunction(
/// Some parameter documentation
String parameter,
) {
}
Run Code Online (Sandbox Code Playgroud)
但这不起作用。
但是,这似乎是可能的,因为dartanalyzer 确实包含ParameterElement文档的属性。
我正在开发一个Flutter应用程序,主要用于iOS。
我的一个视图有一个文本字段,当您点击它时会出现iOS键盘。问题是-布局无法像在本地iOS应用中一样平滑地更改。而是,即使在键盘打开动画完成之前,它也会立即跳到最终可用的屏幕高度。
我尝试将SafeArea元素包装在中AnimatedSize,AnimatedContainer但没有帮助。
我的布局代码:
SafeArea(child:
Column(children:[
TextField(...)
])
)
Run Code Online (Sandbox Code Playgroud)
键盘出现时如何使布局平滑调整大小?


假设我想在 a 内放置一个小部件,Stack但使用堆栈位置的百分比而不是固定大小。如何在颤振中做到这一点?
我希望Positionned.fromRelativeRect构造函数就是这样,使用介于 0 和 1 之间的浮点数。但似乎没有。
Align允许以百分比定位小部件。但是heightFactor并widthFactor更改Align大小而不是子大小。这不是我想要的。