构建函数返回null.Build函数一定不能返回null

时间:2020-06-04 13:05:10

标签: android ios flutter mobile-application nativeapplication

我是Flutter编程的初学者。我尝试了一个示例,并引发了错误,即构建函数返回了null。我的代码有问题吗?

这是我的代码。

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return  MaterialApp(
      title: 'Startup Name Generator',
      home:  RandomWords(),
    );
  }
}
class RandomWordsState extends State<RandomWords> {
  @override
  Widget build(BuildContext context) {
    final _suggestions = <WordPair>[];
    final _biggerFont = const TextStyle(fontSize: 18.0);
    Widget _buildRow(WordPair pair) {
      return ListTile(
        title: Text(
          pair.asPascalCase,
          style: _biggerFont,
        ),
      );
    }
    Widget _buildSuggestions() {
      return ListView.builder(
          padding: const EdgeInsets.all(16.0),
          itemBuilder: /*1*/ (context, i) {
            if (i.isOdd) return Divider(); /*2*/
            final index = i ~/ 2; /*3*/
            if (index >= _suggestions.length) {
              _suggestions.addAll(generateWordPairs().take(10));
            }
            return _buildRow(_suggestions[index]);
          });
    }
  }
}

class RandomWords extends StatefulWidget {
  @override
  RandomWordsState createState() => RandomWordsState();
}

下面是运行代码时发生的错误。

I/flutter ( 1781): A build function returned null.
I/flutter ( 1781): The offending widget is:
I/flutter ( 1781):   RandomWords
I/flutter ( 1781): Build functions must never return null.
I/flutter ( 1781): To return an empty space that causes the building widget to fill available room, return
I/flutter ( 1781): "Container()". To return an empty space that takes as little room as possible, return
I/flutter ( 1781): "Container(width: 0.0, height: 0.0)".
I/flutter ( 1781): 
I/flutter ( 1781): The relevant error-causing widget was:
I/flutter ( 1781):   RandomWords file:///C:/Users/cyberpunk/flutterProjects/flutter_app/lib/main.dart:11:14

2 个答案:

答案 0 :(得分:1)

您没有将任何小部件返回到build。您需要在构建中返回一个小部件,在这种情况下,该小部件为_buildSuggestions()

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return  MaterialApp(
      title: 'Startup Name Generator',
      home:  RandomWords(),
    );
  }
}
class RandomWordsState extends State<RandomWords> {
  final _suggestions = <WordPair>[];
  final _biggerFont = const TextStyle(fontSize: 18.0);

  @override
  Widget build(BuildContext context) {
    return _buildSuggestions(); // return a widget
  }

  Widget _buildRow(WordPair pair) {
    return ListTile(
      title: Text(
        pair.asPascalCase,
        style: _biggerFont,
      ),
    );
  }
  Widget _buildSuggestions() {
    return ListView.builder(
        padding: const EdgeInsets.all(16.0),
        itemBuilder: /*1*/ (context, i) {
          if (i.isOdd) return Divider(); /*2*/
          final index = i ~/ 2; /*3*/
          if (index >= _suggestions.length) {
            _suggestions.addAll(generateWordPairs().take(10));
          }
          return _buildRow(_suggestions[index]);
        });
  }
}

class RandomWords extends StatefulWidget {
  @override
  RandomWordsState createState() => RandomWordsState();
}

答案 1 :(得分:1)

您在build函数中未返回任何内容。添加回报_buildSuggestions()