如何在颤振中映射小部件?

时间:2021-04-27 14:29:23

标签: flutter dart widget

我正在尝试使用 ListWheelScrollView 构建一个列表。我想将不同的容器显示为元素,但我也想更改所选项目的参数。

ListWheelScrollView.useDelegate(
            itemExtent: 140,
            perspective: 0.0005,
            physics: FixedExtentScrollPhysics(),
            diameterRatio: 1.3,
            squeeze: 1.4,
            onSelectedItemChanged: (index) => {
              setState(() {
                _selectedItemIndex = index;
              }),
            },
            childDelegate: ListWheelChildLoopingListDelegate(
                children: items
                    .map<Widget>((value) => Container(
                            child: BackdropFilter(
                          filter: ui.ImageFilter.blur(
                            sigmaX: _selectedItemIndex == items.indexOf(value)
                                ? 0
                                : 0,
                            sigmaY: _selectedItemIndex == items.indexOf(value)
                                ? 0
                                : 0,
                          ),
                          child: Container(
                            margin: EdgeInsets.only(
                                left: _selectedItemIndex == items.indexOf(value)
                                    ? 40
                                    : 60,
                                right:
                                    _selectedItemIndex == items.indexOf(value)
                                        ? 40
                                        : 60,
                                bottom:
                                    _selectedItemIndex == items.indexOf(value)
                                        ? 15
                                        : 25,
                                top: _selectedItemIndex == items.indexOf(value)
                                    ? 15
                                    : 25),
                            decoration: BoxDecoration(
                              boxShadow: [
                                BoxShadow(
                                  color: Colors.black.withOpacity(0.5),
                                  spreadRadius: 3,
                                  blurRadius: 6,
                                  offset: Offset(
                                      0, 4), // changes position of shadow
                                ),
                              ],
                              gradient: LinearGradient(
                                  colors: [
                                    _selectedItemIndex == items.indexOf(value)
                                        ? trackGradient1
                                        : trackGradient1.withOpacity(0.6),
                                    _selectedItemIndex == items.indexOf(value)
                                        ? trackGradient2
                                        : trackGradient2.withOpacity(0.6),
                                  ],
                                  begin: Alignment.topLeft,
                                  end: Alignment.bottomRight),
                              borderRadius:
                                  BorderRadius.all(Radius.circular(35)),
                            ),
                            child: Center(
                              child: Text(
                                '$value',
                                style: TextStyle(
                                  color:
                                      _selectedItemIndex == items.indexOf(value)
                                          ? Colors.white
                                          : Colors.white.withOpacity(0.05),
                                  fontSize:
                                      _selectedItemIndex == items.indexOf(value)
                                          ? 25
                                          : 20,
                                ),
                              ),
                            ),
                          ),
                        )))
                    .toList()),
          ),

我正在通过这种方法获取物品

List<Widget> getList() {
    List<Widget> list = [];

    for (int i = 0; i < 11; i++) {
      list.add(ListElement());
    }
    return list;
  }
}

ListElement 基本上是一个参数很少的容器。 我想显示这些容器,但应用将 ListElement() 显示为字符串。

这里发生了什么?请帮忙。

image

0 个答案:

没有答案