【发布时间】:2020-05-30 21:38:54
【问题描述】:
我正在尝试将我的代码转换为使用提供程序(提供程序包),因为我认为它可能会更有效,尤其是因为我需要通过“设置页面”和“添加更多名称页面”来更新小部件' 位于小部件树的下方。
但是,我不确定在使用提供程序时将大部分“逻辑”放在哪里。例如,在我的原始格式中,我有两个列表 names 和 games。
final List<String> names = [];
List<String> games = ["Game 1", "Game 2", "Game 3", "Game 4", "Game 5"];
之前,我创建了一个将添加到列表names 的文本字段。
TextEditingController nameController = TextEditingController();
TextField(
controller: nameController,
onSubmitted: addToList(),
addToList() {
if (nameController.text.isNotEmpty) {
setState(() {
names.add(nameController.text);
});
nameController.clear();
}
}
我应该将这个TextField 或addTooList 方法放入我的DataProvider 类中,如下所示,因为我需要在小部件树的下方添加更多names 和games。如果是这样,您将如何/如何使用它?
import 'package:flutter/material.dart';
class DataProvider with ChangeNotifier{
List<String> _names;
List<String> _games;
DataProvider(){
_names = [];
_games = ["Game 1", "Game 2", "Game 3", "Game 4", "Game 5"];
}
// Getters - How we get these values
List<String> get names => _names;
List<String> get games => _games;
// Setters
void setNames(List<String> names){
_names = names;
notifyListeners();
}
void setGames(List<String> games){
_games = games;
notifyListeners();
}
}
谢谢!将不胜感激。
【问题讨论】: