gpt4 book ai didi

flutter - 在小部件中定义成员时如何避免警告?

转载 作者:IT王子 更新时间:2023-10-29 07:10:51 34 4
gpt4 key购买 nike

这是我的代码。

import 'package:flutter/material.dart';

class Home extends StatelessWidget {
Map _parameters;

Home([Map params]) {
_parameters = params;
}

@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Home'),
),
body: Center(
child: Column(
children: [
Text(_parameters.toString()),
],
),
),
);
}
}

IDE 说有一个警告。

info: This class (or a class which this class inherits from) is marked as '@immutable', but one or more of its instance fields are not final: Home._parameters (must_be_immutable at [hello_flutter_boost] lib/page/home.dart:6)

这里有个问题。我必须定义 _parameters 来存储来自 Home() (构造函数)的参数,以便小部件可以从外部获取参数。但它会引起警告。

有什么办法可以避免警告吗?

(GitHub 中的相关问题:https://github.com/flutter/flutter/issues/36899)

最佳答案

StatefulWidget

你不应该在你的无状态类中改变变量,它在设计上是不可变的,这就是为什么有另一种类型的小部件可以允许状态改变,即有状态小部件

因此您需要将无状态小部件转换为有状态小部件。

代码:

class Home extends StatefulWidget {
final Map parameters;

Home({this.parameters});

@override
_HomeState createState() => _HomeState();
}

class _HomeState extends State<Home> {
var _paramater ;
@override
void initState() {
super.initState();
_paramater = widget.parameters;
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Home'),
),
body: Center(
child: Column(
children: [
Text(_paramater.toString()),
],
),
),
);
}
}

关于flutter - 在小部件中定义成员时如何避免警告?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57193022/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com