使用无状态小部件创建简单随机发生器时出错。无法在初始化程序中访问实例成员
Error in creating a simple randomizer with stateless widget. The instance member can't be accessed in an initializer
我正在尝试创建一个非常简单的生成器,其中“是”、“否”或“可能”出现在这个(无状态)crystal 球中。
这是我的代码:
import 'dart:html';
import 'package:flutter/material.dart';
import 'dart:math';
void main() => runApp(
MaterialApp(home: MyApp()),
);
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Welcome to Flutter',
home: Scaffold(
backgroundColor: Colors.white,
appBar: AppBar(
title: Text('Welcome to Flutter'),
),
body: Center(
child: Image.asset('images/blu.png'),
),
),
);
}
}
class picker extends StatefulWidget {
@override
_pickerState createState() => _pickerState();
}
class _pickerState extends State<picker> {
List yourList = ["Yes", "No", "Maybe"];
int randomIndex = Random().nextInt(yourList.length);
@override
Widget build(BuildContext context) {
return Center(
child: TextButton(
onPressed: () {
setState(() {
print(yourList[randomIndex]);
});
},
child: null,
),
);
}
}
但是它说这个错误并且不会让我热重载它:
实例成员 'yourList' 无法在初始化程序中访问。
此外,我添加了 child:null,因为该参数是必需的。
您需要像这样在 constructor
中调用 yourList
:
class _pickerState extends State<picker> {
List yourList = ["Yes", "No", "Maybe"];
int randomIndex;
_pickerState() {
randomIndex = Random().nextInt(yourList.length);
}
...
我正在尝试创建一个非常简单的生成器,其中“是”、“否”或“可能”出现在这个(无状态)crystal 球中。
这是我的代码:
import 'dart:html';
import 'package:flutter/material.dart';
import 'dart:math';
void main() => runApp(
MaterialApp(home: MyApp()),
);
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Welcome to Flutter',
home: Scaffold(
backgroundColor: Colors.white,
appBar: AppBar(
title: Text('Welcome to Flutter'),
),
body: Center(
child: Image.asset('images/blu.png'),
),
),
);
}
}
class picker extends StatefulWidget {
@override
_pickerState createState() => _pickerState();
}
class _pickerState extends State<picker> {
List yourList = ["Yes", "No", "Maybe"];
int randomIndex = Random().nextInt(yourList.length);
@override
Widget build(BuildContext context) {
return Center(
child: TextButton(
onPressed: () {
setState(() {
print(yourList[randomIndex]);
});
},
child: null,
),
);
}
}
但是它说这个错误并且不会让我热重载它:
实例成员 'yourList' 无法在初始化程序中访问。
此外,我添加了 child:null,因为该参数是必需的。
您需要像这样在 constructor
中调用 yourList
:
class _pickerState extends State<picker> {
List yourList = ["Yes", "No", "Maybe"];
int randomIndex;
_pickerState() {
randomIndex = Random().nextInt(yourList.length);
}
...