class Foo {
int count; // Error
void bar() => count = 0;
}
Run Code Online (Sandbox Code Playgroud)
为什么我已经在bar方法中初始化它时看到错误?如果count被标记为 ,我可以理解这个错误final。
为什么这段代码:
class _SequentialTextPageState {
String jsonTextPref = 'seqtext';
int jsonTextSuff = 10;
String jsonText = jsonTextPref + jsonTextSuff.toString();
}
Run Code Online (Sandbox Code Playgroud)
产生这些错误?
Error: The instance member 'jsonTextPref' can't be accessed in an initializer.
Error: The instance member 'jsonTextSuff' can't be accessed in an initializer.
Run Code Online (Sandbox Code Playgroud)
在我看来,String和之间的串联int是正确的吗?
我不确定为什么会失败?如何解决这个问题?
根据此 https://dart.dev/tools/diagnostic-messages#private_Optional_parameter ,它被告知要使它们不带下划线。但这使得变量成为公共变量而不是私有变量?
class ContactElement extends StatelessWidget {
final IconData _icon;
final String _heading;
final String _describer;
const ContactElement({
Key? key,
required this._icon,
required this._heading,
required this._describer,
}) : super(key: key);
}
Run Code Online (Sandbox Code Playgroud)
请帮忙
class A {
A(int value);
}
class B extends A{
final int foo;
B.one(this.foo) : super(foo); // Works
B.two(int foo) : foo = foo, super(this.foo); // Doesn't work
}
Run Code Online (Sandbox Code Playgroud)
在 中B.one,我可以轻松地将 的值传递给footosuper但在 中B.two,我不能这样做。在这两种情况下,该字段foo都是在调用之前分配的super,在一种情况下它有效,在另一种情况下它失败。所以,问题是在构造函数中什么时候创建字段。
如何从 Dart 的默认构造函数中使用私有实例变量的 setter?
给定示例类:
class A {
String name;
int _age;
int get age => _age;
set age(age) {
_age = age ?? 0;
}
A(this.name, this._age);
}
Run Code Online (Sandbox Code Playgroud)
我如何使用这个构造函数来遍历该set age()函数?除了使用 a 之外还有什么办法factory吗?我想做这样的事情
A(this.name, newAge): age = newAge;
Run Code Online (Sandbox Code Playgroud)
但是我收到一个错误,迫使我只从构造函数中设置实例变量,这让我只需复制设置器:
A(this.name, newAge): _age = newAge ?? 0;
Run Code Online (Sandbox Code Playgroud)
我是否遗漏了一些东西,或者这对于 dart 来说是不可能的?
我来自 python 背景,试图学习类似 java 的语言。这是用 dart 编写的,用于颤振。
当我尝试运行以下命令时出现错误。
class _MyGameState extends State<MyGame> {
int _numberOfTeams = 4;
List<int> _teamPoints = List.filled(_numberOfTeams, 0);
Run Code Online (Sandbox Code Playgroud)
我得到的错误信息是:
无法在初始化程序中访问实例成员“_numberOfTeams”。尝试用不同的表达式替换对实例成员的引用
为什么会这样,如何避免呢?(显然,这个例子被简化了,我可以很容易地简单地省略变量_numberOfTeams并规避问题,但这不是重点。)
(这里有很多非常相似的问题。这些问题的所有答案都提供了解决特定问题的方法,但不是“为什么”会出现问题或在用这种常见的语言写作时如何思考。一些相关的搜索我可以查看的词,或者指南/教程/文章的链接将不胜感激:)
我已经以这种方式在 Dart 中创建了我的类,但是我Non-nullable instance field 'text' must be initialized. Try adding an initializer expression, or add a field initializer in this constructor, or mark it 'late'.想知道是否有一种方法可以以“Python”风格来创建这种类,在此先感谢您。
class Lexer {
String _text;
int _pos;
String _current_char;
Lexer(String text) {
this._text = text;
this._pos = -1;
this._current_char = '';
this.advance();
}
void advance() {
this._pos++;
this._current_char = this._pos < this._text.length ? this._text[this._pos] : '';
}
}
Run Code Online (Sandbox Code Playgroud)