我有Stateless
小部件。当用户点击按钮时,我调用计算值的方法。我需要将此值通过Navigator.push
传递到下一页。
例如,我有:
class Page1 extends StatelessWidget {
String value1;
String value2;
…
child: RaisedButton(
onPressed: () async {
await _calculateValue(context);
Navigator.push(
context,
new MaterialPageRoute(
builder: (BuildContext context) =>
new Page2(
value1: value1,
value2: value2,
)));
…
_calculateValue(BuildContext context) async {
value1 = …
value2 = …
但是当我这样做时,flutter analyze
发出警告:
该类(或该类继承的类)被标记为 '@immutable',但其一个或多个实例字段不是最终的
我不能只声明value1
的最终名称,因为它会给出错误:
错误:必须初始化最终变量“ value1”。
我该如何解决?
答案 0 :(得分:0)
据我了解,您正在尝试获取或计算一些值,然后将它们作为参数从一个屏幕传递到另一个屏幕。您可以通过使用具有特殊类的命名路由来完成此操作。您可以使用<script>
import {search} from './store.js';
import Child from './Child.svelte';
</script>
<!-- <input bind:value={$search}> -->
<input on:change={e => {search.set(e.target.value)}}>
<div>
<h3>{$search}</h3>
<Child child={'A'} />
<Child child={'B'} />
</div>
在第二个屏幕上检索值。对于您的情况,可能是这样的:
ModalRoute.of(context).settings.arguments