首页 > 解决方案 > 将数据从无状态小部件传递到有状态小部件

问题描述

我有这个带有数据的自定义类,它称之为无状态小部件,并且在有状态小部件中调用了无状态小部件,但不确定如何将数据传递给有状态小部件?

Model 
class ListOfIcon {
  String title;
  String imgurl;
  ListOfIcon({
    this.title,
    this.imgurl,
  });
}

数据 :

final List<ListOfIcon> listoficons = [
  ListOfIcon(title: 'fsdf', imgurl: 'assets/images/p4.jpg'),
  ListOfIcon(title: 'fsdf', imgurl: 'assets/images/p4.jpg'),
  ListOfIcon(title: 'fsdf', imgurl: 'assets/images/p4.jpg'),
  ListOfIcon(title: 'fsdf', imgurl: 'assets/images/p4.jpg'),
  ListOfIcon(title: 'fsdf', imgurl: 'assets/images/p4.jpg'),
  ListOfIcon(title: 'fsdf', imgurl: 'assets/images/p4.jpg'),
];

无状态小部件:

class RowOFIcons extends StatelessWidget {
  final ListOfIcon listOfIcon;

  const RowOFIcons({
    Key key,
    this.listOfIcon,
  }) : super(key: key);
  @override
  Widget build(BuildContext context) {
    return SliverToBoxAdapter(
      child: GridView.builder(
        itemCount: 6,
        gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
          crossAxisCount: 4,
        ),
        itemBuilder: (BuildContext context, int index) {
          return Text(
            listOfIcon.title,
            style: TextStyle(
              color: Colors.white,
            ),
          );
        },
      ),
    );
  }
}

有状态的小部件:

class Profile extends StatefulWidget {
  @override
  _ProfileState createState() => _ProfileState();
}

class _ProfileState extends State<Profile> {
  ScrollController _scrollController;
  double _scrolloffset = 0.0;

  @override
  void initState() {
    _scrollController = ScrollController()
      ..addListener(() {
        setState(() {
          _scrolloffset = _scrollController.offset;
        });
      });
    super.initState();
  }

  @override
  void dispose() {
    _scrollController.dispose();
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    final Size screenSize = MediaQuery.of(context).size;
    return Scaffold(
      appBar: PreferredSize(
        preferredSize: Size(screenSize.width, 50.0),
        child: CustomAppBar(
          scrollOffset: _scrolloffset,
        ),
      ),
      body: CustomScrollView(
        controller: _scrollController,
        slivers: [
          SliverPadding(
            padding: const EdgeInsets.all(8.0),
            sliver: ProfilePhoto(),
          ),
          SliverPadding(
            padding: const EdgeInsets.all(8.0),
            sliver: RowOFIcons(
              listOfIcon: listoficons.,
            ),
          ),
        ],
      ),
    );
  }
}

嗨,我有这个带有数据的自定义类,它称之为无状态小部件,并且在有状态小部件中调用了无状态小部件,但不确定如何将数据传递给有状态小部件?

标签: flutterdart

解决方案


我认为您正在寻找的是状态管理解决方案。在这里了解它。


推荐阅读