【问题标题】:How to get variable from class to future in flutter?如何在颤动中从班级到未来?
【发布时间】:2022-10-14 20:19:04
【问题描述】:

我正在尝试使用如下更新功能更新 Firestore 数据。我将来要使用的变量在一个类中。我如何从未来外部获得变量?我想更新我点击的数据,所以我需要获取 id clicked item。我想使用的变量是'??????'我说 我能为这个问题做些什么?

    class Test extends StatefulWidget {
      const Test({Key? key}) : super(key: key);
    
      @override
      State<Test> createState() => _TestState();
    }
    
    class _TestState extends State<Test> {
      final Stream<QuerySnapshot> _usersStream =
          FirebaseFirestore.instance.collection('testinfo').snapshots();
    
      @override
      Widget build(BuildContext context) {
        return Container(
            padding: const EdgeInsets.all(defaultPadding),
            child: Column(crossAxisAlignment: CrossAxisAlignment.start, children: [
              StreamBuilder<QuerySnapshot>(
                stream: _usersStream,
                builder:
                    (BuildContext context, AsyncSnapshot<QuerySnapshot> snapshot) {
                  if (snapshot.hasError) {
                    return const CircularProgressIndicator();
                  }
    
                  if (snapshot.connectionState == ConnectionState.waiting) {
                    return const Text("Loading");
                  }
    
                  return SizedBox(
                      width: double.infinity,
                      child: DataTable(
                          columnSpacing: defaultPadding,
                          columns: const [
                            DataColumn(
                              label: Text('Text'),
                            ),
                           ],
                          rows: _buildList(context, snapshot.data!.docs)));
    
                        },
                       )
                    ]));
                     }
    List<DataRow> _buildList(
          BuildContext context, List<DocumentSnapshot> snapshot) {
        return snapshot.map((data) => _buildListItem(context, data)).toList();
      }
      
    DataRow _buildListItem(BuildContext context, DocumentSnapshot data) {

    final ?????? = FirebaseFirestore.instance
                    .collection('testinfo')
                    .doc(data.id);

    return DataRow(cells: [
          DataCell(Text(data['name']!)),
     DataCell(Row(children: [
            PopupMenuButton<Menu>(
                padding: const EdgeInsets.only(right: 2, left: 1, top: 2),
                onSelected: (value) async {
                  if (value == Menu.itemOne) {
     controllerName.text = data.get('name');
    showDialog(
                        context: context,
                        builder: (context) => Dialog(
                                child: Container(
                              color: primaryColor,
                              child: Padding(
                                padding: const EdgeInsets.all(8.0),
                                child: ListView(
                                  shrinkWrap: true,
                                  children: <Widget>[
                                    TextField(
                                      onChanged: (value) {
                                        candidateName = value;
                                      },
                                      controller: controllerName,
                                      decoration: InputDecoration(
                                        hintText: 'name',)
                                  )
                                )
    
     itemBuilder: (BuildContext context) => <PopupMenuEntry<Menu>>[
                      const PopupMenuItem<Menu>(value: Menu.itemTwo,
                        child: Text('edit'),),


    Future updateData() async {
      
      await ??????.update({
        'name': controllerName.text,
    
      }).then((value) => print('updated.'));
    
      }

【问题讨论】:

  • 您的意思是从updateData 获得价值吗?

标签: flutter dart google-cloud-firestore flutter-futurebuilder


【解决方案1】:
  UserDetailsModel currentUser;
              List<UserDetailsModel> membersDetails = [];
              for (int i = 0; i < data.docs.length; i++) {
                membersDetails.add(UserDetailsModel.fromJson(
                    data.docs[i].data()! as Map<String, dynamic>));
              }

UserDetailsModel 是您的模型类 你以后用它...

【讨论】:

    猜你喜欢
    • 2020-11-14
    • 1970-01-01
    • 1970-01-01
    • 2013-01-25
    • 2016-08-09
    • 1970-01-01
    • 2017-01-22
    • 2018-01-16
    • 1970-01-01
    相关资源
    最近更新 更多