質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%
Flutter

Flutterは、iOSとAndroidのアプリを同じコードで開発するためのフレームワークです。オープンソースで開発言語はDart。双方のプラットフォームにおける高度な実行パフォーマンスと開発効率を提供することを目的としています。

Dart

Dartは、Googleによって開発されたJavaScriptの代替となることを目的に作られた、ウェブ向けのプログラミング言語である。

解決済

The class doesn't have an unnamed constructor. エラーについて

mako_0221
mako_0221

総合スコア38

Flutter

Flutterは、iOSとAndroidのアプリを同じコードで開発するためのフレームワークです。オープンソースで開発言語はDart。双方のプラットフォームにおける高度な実行パフォーマンスと開発効率を提供することを目的としています。

Dart

Dartは、Googleによって開発されたJavaScriptの代替となることを目的に作られた、ウェブ向けのプログラミング言語である。

1回答

0評価

0クリップ

146閲覧

投稿2022/05/23 06:09

下記のコードを実行しようとすると以下のようなエラーが//here1で出力されます、
The class 'TopPage' doesn't have an unnamed constructor. (view docs) Try using one of the named constructors defined in 'TopPage'.

Dart

import 'package:flutter/material.dart'; import 'dart:math'; void main() => runApp(TopPage()); //here1 class TopPage extends StatelessWidget { List<Widget> _tiles; _tiles.add(UniqueColorGenerator.getColor());// here2 _tiles.add(UniqueColorGenerator.getColor());;// here2 Widget build(BuildContext context) { return Container( //omit } } class UniqueColorGenerator { static List _colorOptions = [ const Color(0xff2196f3), const Color(0xfff44336), ]; static Random _random = Random(); static Color getColor() { final selectedColor = _colorOptions.removeAt(_random.nextInt(_colorOptions.length)); print(selectedColor); return selectedColor; } }

そこで、上記の"here2"について、以下のように直接List<Widget> _tilesを初期化してあげるとエラーは出力されなくなります。

Dart

class TopPage extends StatelessWidget { // final Color _color = UniqueColorGenerator.getColor(); List<Widget> _tiles=[ UniqueColorGenerator.getColor(), UniqueColorGenerator.getColor() ]; Widget build(BuildContext context) { return Container( color: _color, child: const Padding(padding: EdgeInsets.all(100.0))); } }

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のコンストラクタ部分を読んでも、このエラーの意味・問題点、解決方法がわからないのですが、(基本的なコンストラクタの考え方がわかっておらず申し訳ございませんが)、アドバイス願えますでしょうか?

よろしくお願い申し上げます。

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

Flutter

Flutterは、iOSとAndroidのアプリを同じコードで開発するためのフレームワークです。オープンソースで開発言語はDart。双方のプラットフォームにおける高度な実行パフォーマンスと開発効率を提供することを目的としています。

Dart

Dartは、Googleによって開発されたJavaScriptの代替となることを目的に作られた、ウェブ向けのプログラミング言語である。