【问题标题】:How to access a list created in a stateful widget in one file to stateless widget in another file?如何访问在一个文件中的有状态小部件中创建的列表到另一个文件中的无状态小部件?
【发布时间】:2020-08-23 06:32:27
【问题描述】:

我有一个有状态的小部件,其中有一个这样的列表,

import 'package:flutter/material.dart';
import 'package:todoapp/widgets/tasks_tile.dart';
import 'package:todoapp/models/Tasks.dart';

class TasksList extends StatefulWidget {
  @override
  _TasksListState createState() => _TasksListState();
}

class _TasksListState extends State<TasksList> {
  List<Task> task = [
    Task(
      taskTitle: "Buy Bread",
    ),
    Task(
      taskTitle: "Buy Cream",
    ),
    Task(
      taskTitle: "Buy Beer",
    )
  ];
  @override
  Widget build(BuildContext context) {
    return ListView.builder(
      itemCount: task.length,
      itemBuilder: (context,index){
        return TaskTile(isChecked: task[index].isDone,
        taskText: task[index].taskTitle,
        callBackCheckBox: (bool checkBoxState){
          setState(() {
            task[index].toogleDone();
          });
        });
    });
  }
}

如何在另一个 dart 文件的无状态小部件中访问此列表?我是新来的。并请解释其背后的概念。

【问题讨论】:

    标签: list flutter


    【解决方案1】:

    Aman Chaudhary 访问 task 列表是通过在另一个 dart 文件中的 Stateless 小部件构造函数中传递所有需要的值来完成的。

    在这里您可以看到您的 ListView.builder 正在返回带有所有必需参数的 stateless 小部件:

    return ListView.builder(
          itemCount: task.length,
          itemBuilder: (context,index){
            return TaskTile(isChecked: task[index].isDone,
            taskText: task[index].taskTitle,
            callBackCheckBox: (bool checkBoxState){
              setState(() {
                task[index].toogleDone();
              });
            });
        });
    

    这意味着,每当处理 callBackCheckBox 时,stateful 小部件就会刷新,ListView.builder 会使用所有 task 列表更新来更新其子级。

    【讨论】:

      猜你喜欢
      • 2018-03-14
      • 1970-01-01
      • 2018-12-04
      • 2019-12-17
      • 2021-09-28
      • 2020-09-10
      • 1970-01-01
      • 2021-08-17
      • 2021-07-20
      相关资源
      最近更新 更多