无法从方法“ build”返回类型为“ ThemeData”的值,因为其返回类型为“小部件”

时间:2020-09-02 17:49:06

标签: flutter dart

我的代码如下


import 'package:flutter/material.dart';

class MyAppTheme extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return ThemeData(primaryColor: Colors.yellow);
  }
}


我收到此错误

方法'build'不能返回类型'ThemeData'的值,因为它的返回类型为'Widget'

我已经尝试了一段时间,例如更改return的{​​{1}}类型并将其设置为另一种类型,例如build,但由于仅期望{{1 }}

如果我想将dynamic拆分到另一个文件怎么办?有任何想法吗?非常欢迎您发布自己的解决方案

2 个答案:

答案 0 :(得分:1)

如您所正确确定的,ThemeData根本不是Widget。如果您尝试创建一个ThemeData来插入theme或类似参数的MaterialApp参数中,则可以创建一个顶级变量:

final myAppTheme = ThemeData(primaryColor: Colors.yellow);

  // somewhere else
  return MaterialApp(
    theme: myAppTheme,
    // ...
  );

答案 1 :(得分:-1)

您不能返回ThemeData,因为它不是窗口小部件,因此无法在屏幕上呈现,这是为什么会突然出现此错误。像这样使用ThemeData

MaterialApp(
  title: title,
  theme: ThemeData(
    // Define the default brightness and colors.
    brightness: Brightness.dark,
    primaryColor: Colors.lightBlue[800],
    accentColor: Colors.cyan[600],

    // Define the default font family.
    fontFamily: 'Georgia',

    // Define the default TextTheme. Use this to specify the default
    // text styling for headlines, titles, bodies of text, and more.
    textTheme: TextTheme(
      headline1: TextStyle(fontSize: 72.0, fontWeight: FontWeight.bold),
      headline6: TextStyle(fontSize: 36.0, fontStyle: FontStyle.italic),
      bodyText2: TextStyle(fontSize: 14.0, fontFamily: 'Hind'),
    ),
  )
);