DropDownFormField 保持其旧值

问题描述 投票:0回答:1

当使用 DropdownButtonFormField 而不是 DropdownButton 时,重建小部件时不会考虑给定的 selectedValue。我什么时候才能避免这个问题?

import 'package:flutter/material.dart';


void main() {
  runApp(
    MaterialApp(
      home: HomeRoute(),
    ),
  );
}

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

  @override
  State<HomeRoute> createState() => _HomeRouteState();
}

class _HomeRouteState extends State<HomeRoute> {
  String selectedValue = '1';

  @override
  Widget build(BuildContext context) {
    print('Building with selected value : $selectedValue');
    return Scaffold(
      appBar: AppBar(title: const Text('Title'),),
      body: Column(
        children: [
          DropdownButtonFormField<String>(
            value: selectedValue,
            onChanged: (value) {
              setState(() {
                // Not updating the value
                // selectedValue = value!;
              });
            },
            items: [
              for(int i = 0; i < 10; i++)
                DropdownMenuItem<String>(value: '$i', child: Text('$i'),),
            ],
          ),
        ],
      ),
    );
  }
}

Stackoverflow 告诉我需要添加更多细节,但没什么可说的了。

flutter
1个回答
0
投票

尝试下面的代码希望对您有帮助使用

DropdownButton

DropdownButton<String>(
        value: selectedValue,
        onChanged: (value) {
          setState(() {
            selectedValue = value!;
          });
        },
        items: [
          for (int i = 0; i < 10; i++)
            DropdownMenuItem<String>(
              value: '$i',
              child: Text('$i'),
            ),
        ],
      ),
© www.soinside.com 2019 - 2024. All rights reserved.