我正试图实现这一愿景。[1]: https://i.stack.imgur.com/6COFI.png这是我第一次使用提供商。同样的代码也适用于todo应用程序。但我无法使用此应用程序的代码。我尝试过修改代码,但徒劳无功。
错误消息是:EXCEPTION CAUGHT BY GESTURE ╞═══════════════════════════════════════════════════════════════════ 抛出以下断言处理手势时:尝试从小部件树外部监听提供程序公开的值。
这可能是由调用Provider的事件处理程序(如按钮的onPressed)引起的。未通过的of侦听:false
。
要修复,请写入:Provider。of(上下文,听:假);
它不受支持,因为当小部件树不关心值时,它可能会无意义地重建与事件处理程序关联的小部件。
使用的上下文是:AddPlayersScreen(状态:_AddPlayersScreenState#da0e7)'包:provider/src/provider。dart':失败的断言:第242行第7位:“上下文”。物主debugBuilding | | listen==false | | DebugIsInheritedProviderUpdate'
抛出异常时,这是堆栈:#2 Provider.of(包:提供者/src/provider.dart:242: 7)#3_AddPlayersScreenState.build.(包:badminton_app/屏幕/add_players_screen.dart:73: 34)#4_InkResponseState。_handleTap(包:flutter/src/材料/ink_well.dart:992: 19)#5_InkResponseState.build.(包:flutter/src/材质/ink_well.dart:1098: 38)#6 GestureRecognizer.invokeCallback(包:flutter/src/手势/recognizer.dart:184: 24)#7 TapGestureRecognizer.handleTapUp(包:flutter/src/_checkUp(包:flutter/src/手势/tap.dart:284: 5)#9 BaseTapGestureRecognizer.accept手势(包:flutter/src/手势/tap.dart:256: 7)#10 GestureArenaManager.sweep(包:flutter/src/手势/arena.dart:158: 27)#11 GestureBinding.handle事件(软件包:flutter/src/手势/binding.dart:224: 20)#12 GestureBinding.dispatch事件(软件包:flutter/src/手势/binding.dart:200: 22)#13 Gesture绑定._handlePointerEvent(软件包:flutter/src/手势/绑定. dart: 158:7)#14手势绑定。_flushPointerEventQueue(软件包:flutter/src/手势/绑定。dart: 104:7)#15手势绑定。_handlePointerDataPacket(软件包:flutter/src/手势/绑定。dart: 88:7)#19_invoke1(dart: ui/钩子。dart: 267:10)#20_dispatchPointerDataPacket(dart: ui/钩子。dart: 176:5)(省略了类_AssertionError和dart: async的5帧)
处理程序:“onTap”识别器:TapGestureRecognizer#65790════════════════════════════════════════════════════════════════════════════════════════════════════
import 'package:badminton_app/constants.dart';
import 'package:badminton_app/model/player_list.dart';
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import 'package:badminton_app/constants.dart';
import 'package:badminton_app/model/players_data.dart';
import 'package:badminton_app/widgets/check_cards.dart';
TextEditingController _controller = TextEditingController();
class AddPlayersScreen extends StatefulWidget {
@override
_AddPlayersScreenState createState() => _AddPlayersScreenState();
}
class _AddPlayersScreenState extends State<AddPlayersScreen> {
String newText;
@override
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: Color(0xff07021A),
body: SafeArea(
child: Padding(
padding: const EdgeInsets.all(25.0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
SizedBox(
height: 30.0,
),
Text(
'Add Players',
style: TextStyle(
color: Colors.white,
fontSize: 40.0,
fontFamily: 'Montserrat'),
),
SizedBox(
width: 400.0,
height: 50.0,
child: Divider(
height: 10.0,
color: Color(0xff525274),
),
),
Container(
constraints: BoxConstraints.tight(Size(400.0, 70.0)),
child: TextField(
cursorColor: Color(0xffA8A3BE),
style: TextStyle(color: Color(0xffA8A3BE), fontSize: 20.0),
controller: _controller,
onChanged: (newValue) {
newText = newValue;
},
enabled: true,
decoration: InputDecoration(
suffix: IconButton(
onPressed: () {
_controller.clear();
},
icon: CircleAvatar(
radius: 13.0,
backgroundColor: Color(0xff939393),
child: Icon(
Icons.clear,
size: 25.0,
color: Color(0xff585179),
),
),
),
suffixIcon: IconButton(
onPressed: () {
Provider.of<PlayerData>(context).changeString(newText);
},
icon: Container(
height: 100.0,
width: 50.0,
decoration: BoxDecoration(
color: Colors.yellow,
borderRadius: BorderRadius.only(
topRight: Radius.circular(5.0),
bottomRight: Radius.circular(5.0))),
child: Icon(
Icons.add,
color: Colors.black,
)),
),
hintText: "New member......",
hintStyle: TextStyle(
fontSize: 20.0,
fontFamily: "Montserrat",
color: Color(
0xffA199C6,
),
),
filled: true,
fillColor: Color(0xff585179),
enabledBorder: OutlineInputBorder(
borderRadius: BorderRadius.all(Radius.circular(10.0)),
borderSide: BorderSide.none),
focusedBorder: OutlineInputBorder(
borderRadius: BorderRadius.all(
Radius.circular(10.0),
),
borderSide: BorderSide.none),
),
),
),
SizedBox(
height: 20.0,
),
Expanded(
child: PlayerList(),
),
],
),
),
),
);
}
}
import 'dart:collection';
import 'package:flutter/cupertino.dart';
import 'package:badminton_app/model/players.dart';
class PlayerData extends ChangeNotifier {
List<Players> _playerData = [];
UnmodifiableListView<Players> get playerData {
return UnmodifiableListView(_playerData);
}
toggleSelect(Players players) {
players.toggle();
notifyListeners();
}
int get getLength {
return playerData.length;
}
changeString(newString) {
_playerData.add(Players(name: newString));
notifyListeners();
}
removeString(Players player) {
_playerData.remove(player);
notifyListeners();
}
}
import 'package:badminton_app/model/players_data.dart';
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import 'package:badminton_app/model/players.dart';
class CheckCards extends StatelessWidget {
final String name;
final bool isSelected;
final Function callBack;
CheckCards({this.name, this.isSelected = false, this.callBack});
@override
Widget build(BuildContext context) {
return Container(
margin: EdgeInsets.only(bottom: 20.0),
child: Stack(
children: [
Positioned(
left: 25.0,
top: 17.0,
child: Center(
child: InkWell(
onTap: callBack,
child: Container(
decoration: BoxDecoration(
borderRadius: BorderRadius.all(Radius.circular(7.0)),
color: Colors.yellow),
child: Padding(
padding: const EdgeInsets.all(1.0),
child: isSelected
? Icon(
Icons.brightness_1,
size: 30.0,
color: Color(0xff585179),
)
: Icon(
Icons.stop,
size: 30.0,
color: Color(0xff585179),
),
),
),
),
),
),
Positioned(
left: 80.0,
top: 22.0,
child: Text(
'Sai Deepak',
style: TextStyle(
fontWeight: FontWeight.bold,
fontSize: 20.0,
color: Colors.white,
fontFamily: 'Montserrat'),
),
),
],
),
height: 70.0,
width: 500.0,
decoration: BoxDecoration(
color: isSelected ? Color(0xff21213C) : Color(0xff585179),
borderRadius: BorderRadius.all(Radius.circular(10.0))),
);
}
}
import 'package:badminton_app/model/players.dart';
import 'package:badminton_app/model/players_data.dart';
import 'package:badminton_app/widgets/check_cards.dart';
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import 'package:badminton_app/widgets/tile.dart';
class PlayerList extends StatefulWidget {
@override
_PlayerListState createState() => _PlayerListState();
}
class _PlayerListState extends State<PlayerList> {
@override
Widget build(BuildContext context) {
return Consumer<PlayerData>(builder: (context, data, child) {
return ListView.builder(
itemBuilder: (context, index) {
final playo = data.playerData[index];
return CheckCards(
name: playo.name,
isSelected: playo.isDone,
callBack: () {
data.toggleSelect(playo);
},
);
},
itemCount: data.getLength,
);
});
}
}
谁能帮帮我吗。这件事好几天都让我心烦意乱。提前谢谢。
所以,我有一个项目在Flatter中,我试图建立一个卡片列表,其中的内容取决于我的OrderModel类,我试图使用Provider来实现这一点,但我得到了以下错误: ════════ 异常捕获调度程序库 ══════════════════════════ 尝试从小部件树外部侦听提供程序公开的值。 这很可能是由调用Provider.of的事件处理程序(如按钮的onP)引起的,该事件处理程序没有传
问题内容: 如何使用Tomcat从Web应用程序外部的公共文件夹中提供图像文件?我不想在其他端口上使用第二个Apache文件服务器,因为图像文件是同一应用程序的一部分。而且我不想在webapps内部创建指向公共文件夹的符号链接,因为我的应用程序被部署为war文件....是否有一个更简单的解决方案,类似于将默认servlet用于webapps内部的静态内容,用于webapps外部的静态内容 问题答案
问题内容: 当在下拉组件外部单击时,我想关闭下拉菜单。 我怎么做? 问题答案: 在我添加的元素中,像这样: 然后在父母中,我这样做: 该是一个布尔值,当显示在我的情况下,日历和隐藏它。
问题内容: 最近,我遇到了一位程序员的代码,其中他在catch中有一条try-catch语句! 请原谅我无法粘贴实际代码,但是他所做的与以下内容类似: 我个人认为这是我见过的最差的代码!以1到10的比例,您认为我应该多久才能动一下脑子,还是我反应过度? 编辑:他实际上在抓捕中所做的事情,他正在执行一些操作,这些操作在初始尝试失败时可以/应该执行。我的问题是拥有干净的代码和可维护性。将异常从第一个c
问题内容: 关于使用/的最佳实践,我有一个非常基本的问题。我有一个像这样的简单函数(DAO) 并在Web服务中使用DAO功能: OR最好在DAO函数中使用/,如下所示: 问题答案: 没有完美的规则。 如果需要尽早但尽可能晚地捕获异常,通常代码会更清晰,更简单。 您应该考虑在发生这种情况时谁必须采取行动,这决定了您是在方法(addVehicle)内进行操作还是调用方必须执行该操作。 例如: 在此示例
我尝试使用mallet库运行LDA算法。当我尝试使用一组参数运行LDA时,没有问题,但使用另一组参数时,我遇到了以下错误: 我的代码如下所示: 如何捕捉由外部jar引起的异常?我听过这个问题,但它对我不起作用。知道吗? 编辑: 我的项目是一个在apache tomcat服务器上运行的restful网络服务。我试着在多普斯特函数中调用lda算法。 编辑2 Mallet是一个开源库。所以我试着阅读代码