当页面滚动时,选定的下拉值将发生颤动

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

我会将下拉菜单值

1lakh
更改为
Rs. 6000
,然后滚动屏幕。所选的下拉值将更改。

请参阅我的下拉自定义小部件 我会将所有详细信息传递给小部件。 title、DropdownMenuItems、回调函数,并且还给出一个初始选择的值。

import 'package:flutter/material.dart';
import 'package:insurance/widgets/common/colors.dart';

class DropdownWidget extends StatefulWidget {
  const DropdownWidget(
      {super.key,
      required this.title,
      required this.dropdownList,
      required this.selectedValue,
      required this.callback});
  final String title;
  final List<String> dropdownList;
  final String selectedValue;
  final Function callback;

  @override
  State<DropdownWidget> createState() => _DropdownWidgetState();
}

class _DropdownWidgetState extends State<DropdownWidget> {
  late String title = widget.title, selectedValue = widget.selectedValue;
  late List<String> dropdownList = widget.dropdownList;
  late Function callback = widget.callback;

  @override
  Widget build(BuildContext context) {
    return SizedBox(
      height: 50,
      width: double.infinity,
      child: ListTile(
        title: SizedBox(
          width: MediaQuery.of(context).size.width * 0.5,
          child: Row(
            children: [
              Text(
                title,
                style: const TextStyle(
                    fontSize: 14,
                    fontFamily: 'Montserrat',
                    fontWeight: FontWeight.w600),
                overflow: TextOverflow.ellipsis,
              ),
              Visibility(
                  child: title == 'Seating Capacity'
                      ? Text(
                          ' *',
                          style: TextStyle(color: AppColor.red),
                        )
                      : const Text(''))
            ],
          ),
        ),
        trailing: Container(
          width: MediaQuery.of(context).size.width * 0.40,
          height: 50,
          padding: const EdgeInsets.only(left: 10),
          decoration: BoxDecoration(
              color: AppColor.white,
              borderRadius: const BorderRadius.all(Radius.circular(7))),
          child: DropdownButtonHideUnderline(
            child: DropdownButton(
              value: selectedValue,
              borderRadius: const BorderRadius.all(Radius.circular(7)),
              items: dropdownList.map((String value) {
                return DropdownMenuItem(
                  value: value,
                  child: SizedBox(
                    width: MediaQuery.of(context).size.width * 0.30,
                    child: Text(
                      value.toString(),
                      style: TextStyle(
                          fontSize: 14,
                          fontFamily: 'Montserrat',
                          color: AppColor.black,
                          fontWeight: FontWeight.w500),
                      overflow: TextOverflow.clip,
                    ),
                  ),
                );
              }).toList(),
              onChanged: (String? selectedData) {
                print('hello');
                callback(selectedData);

                setState(() {
                  selectedValue = selectedData!;
                });
              },
            ),
          ),
        ),
      ),
    );
  }
}

颤动开关按钮也有同样的问题 我该怎么办?

flutter dropdown dynamic-ui
1个回答
0
投票

如果您直接在 ListView 小部件内使用自定义 Dropdown 小部件,请替换为 SingleChildScrollview (child: Column( Children: [ DropdownWidget]),

© www.soinside.com 2019 - 2024. All rights reserved.