下記のコードを実行しようとすると以下のようなエラーが//here1
で出力されます、
The class 'TopPage' doesn't have an unnamed constructor. (view docs) Try using one of the named constructors defined in 'TopPage'.
Dart
1import 'package:flutter/material.dart'; 2import 'dart:math'; 3 4void main() => runApp(TopPage()); //here1 5 6class TopPage extends StatelessWidget { 7 List<Widget> _tiles; 8 _tiles.add(UniqueColorGenerator.getColor());// here2 9 _tiles.add(UniqueColorGenerator.getColor());;// here2 10 11 Widget build(BuildContext context) { 12 return Container( 13//omit 14 } 15} 16 17class UniqueColorGenerator { 18 static List _colorOptions = [ 19 const Color(0xff2196f3), 20 const Color(0xfff44336), 21 ]; 22 static Random _random = Random(); 23 static Color getColor() { 24 final selectedColor = _colorOptions.removeAt(_random.nextInt(_colorOptions.length)); 25 print(selectedColor); 26 return selectedColor; 27 } 28}
そこで、上記の"here2"について、以下のように直接List<Widget> _tilesを初期化してあげるとエラーは出力されなくなります。
Dart
1class TopPage extends StatelessWidget { 2// final Color _color = UniqueColorGenerator.getColor(); 3 List<Widget> _tiles=[ 4 UniqueColorGenerator.getColor(), 5 UniqueColorGenerator.getColor() 6 ]; 7 8 Widget build(BuildContext context) { 9 return Container( 10 color: _color, 11 child: const Padding(padding: EdgeInsets.all(100.0))); 12 } 13}
diagnostic-messagesを参照すると、
Description
The analyzer produces this diagnostic when an unnamed constructor is invoked on a class that > defines named constructors but the class doesn’t have an unnamed constructor.
名前なしコンストラクタを呼び出そうとしているが、名前なしコンストラクタがないですよ、というメッセージに読み取れます。
オブジェクト指向およびクラスを勉強を初めたばかりで、Language Tourのコンストラクタ部分を読んでも、このエラーの意味・問題点、解決方法がわからないのですが、(基本的なコンストラクタの考え方がわかっておらず申し訳ございませんが)、アドバイス願えますでしょうか?
よろしくお願い申し上げます。

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/05/23 14:35
2022/05/23 14:47
2022/05/23 23:31
2022/05/24 07:19