Android Studio 没有导致错误的参数的列表,甚至在事件之前调用

kmynzznz  于 11个月前  发布在  Android
关注(0)|答案(1)|浏览(43)

我正在尝试用字符串列表来填充一个DropdownButton。
所以我的代码开始于:

List<String> list0 = [];

class mainPage extends StatefulWidget {
  const mainPage({super.key});

  @override
  State<mainPage> createState() => _mainPageState();
}
class _mainPageState extends State<mainPage> {
@override
  void initState() {
    list0.add("value1");
    list0.add("value 2");
    super.initState();
  }

@override
  Widget build(BuildContext context) {
    return Scaffold(
      body:Center(
         child: DropdownButton<String>(
              onChanged: (String? value) {
                 setState(() {
                 dropdownValue = value!;
              });
              items: list0.map<DropdownMenuItem<String>>((String value) {
                return DropdownMenuItem<String>(
                  value: value,
                  child: Text(value),
                );
              }).toList(),
        ),
      ),
    );
  }
}

字符串
我不明白的是代码生成了一个错误,比如说list 0没有值。不能为空。
所以如果我声明像List list 0 = [“0”,“1”];没有问题,会工作得很好。但我想创建一个空列表来填充我的动态信息...
我做错了什么?
谢谢你,谢谢
我试图清除列表。创建一个单一的元素,并删除它后,但当然,这是不正确的。

ax6ht2ek

ax6ht2ek1#

它看起来像是在引用一个dropdownValue变量而没有先定义它。
下面是我成功编译成Flutter应用的dart文件:

import 'package:flutter/material.dart';

void main() {
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) => const MaterialApp(home: MainPage());
}

class MainPage extends StatefulWidget {
  const MainPage({super.key});

  @override
  State<MainPage> createState() => _MainPageState();
}

class _MainPageState extends State<MainPage> {
  List<String> list0 = [];
  String dropdownValue = "";
  @override
  void initState() {
    list0.add("value1");
    list0.add("value2");
    dropdownValue = list0.first;
    super.initState();
  }

  DropdownMenuItem<String> item(String value) => DropdownMenuItem<String>(
        value: value,
        child: Text(value),
      );

  @override
  Widget build(BuildContext context) => Scaffold(
        body: Center(
          child: DropdownButton<String>(
            value: dropdownValue,
            onChanged: (String? value) => setState(() => dropdownValue = value!),
            items: list0.map<DropdownMenuItem<String>>(item).toList(),
          ),
        ),
      );
}

字符串

相关问题