Java 颤振访问私有值
我正在处理浮动动作栏,因为在看板类中,我的_show方法是私有的,所以我无法访问它。我曾尝试转换为静态,但后来我的数据库相关方法导致了问题。我不知道该怎么办有什么建议吗 这是我想要访问的类Java 颤振访问私有值,java,dart,flutter,Java,Dart,Flutter,我正在处理浮动动作栏,因为在看板类中,我的_show方法是私有的,所以我无法访问它。我曾尝试转换为静态,但后来我的数据库相关方法导致了问题。我不知道该怎么办有什么建议吗 这是我想要访问的类 import 'package:flutter/material.dart'; import 'package:entrecor/Util/KanbanScreen.dart' ; class HomePage extends StatelessWidget { .... @override W
import 'package:flutter/material.dart';
import 'package:entrecor/Util/KanbanScreen.dart' ;
class HomePage extends StatelessWidget {
....
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Welcome'),
actions: <Widget>[
FlatButton(
child: Text('Logout',
style: TextStyle(fontSize: 17.0, color: Colors.white)),
onPressed: () => _signOut(context)),
],
),
body: Tabs(),
floatingActionButton:Column(
crossAxisAlignment: CrossAxisAlignment.end,
mainAxisAlignment: MainAxisAlignment.end,
children: <Widget>[
FloatingActionButton(
heroTag: 'FAB1',
onPressed: () {
Navigator.push(
context,
MaterialPageRoute(builder: (context) => NotePage()),
);
},
tooltip: 'Add Note',
child: Icon(Icons.note_add),
),
FloatingActionButton(
heroTag: 'FAB2',
child: Icon(Icons.share,color: Colors.white,),
onPressed: _showFormDialog,
),
],
)
);
}
}
导入“包装:颤振/材料.省道”;
导入“包:entercor/Util/KanbanScreen.dart”;
类主页扩展了无状态小部件{
....
@凌驾
小部件构建(构建上下文){
返回脚手架(
appBar:appBar(
标题:文本(“欢迎”),
行动:[
扁平按钮(
子项:文本('注销',
样式:TextStyle(fontSize:17.0,颜色:Colors.white)),
按下时:()=>\u签出(上下文)),
],
),
正文:制表符(),
floatingActionButton:列(
crossAxisAlignment:crossAxisAlignment.end,
mainAxisAlignment:mainAxisAlignment.end,
儿童:[
浮动操作按钮(
heroTag:'FAB1',
已按下:(){
导航器。推(
上下文
MaterialPage路由(生成器:(上下文)=>NotePage()),
);
},
工具提示:“添加注释”,
子项:图标(图标。注释\u添加),
),
浮动操作按钮(
heroTag:'FAB2',
子:图标(图标。共享,颜色:颜色。白色,),
onPressed:\u showFormDialog,
),
],
)
);
}
}
这就是我想要访问的类
import 'package:entrecor/Model/todoitem.dart';
import 'package:entrecor/Util/database_client.dart';
import 'package:entrecor/Util/dateformatter.dart';
import 'package:flutter/material.dart';
class KanbanScreen extends StatefulWidget {
@override
_KanbanScreenState createState() => _KanbanScreenState();
}
class _KanbanScreenState extends State<KanbanScreen> {
final TextEditingController _textEditingController =
new TextEditingController();
var db = new DatabaseHelper();
final List<TODOItem> _itemList = <TODOItem>[];
@override
void initState() {
super.initState();
_readToDoList();
}
void _handleSubmitted(String text) async {
_textEditingController.clear();
TODOItem todoItem = new TODOItem(text, dateFormatted());
int savedItemId = await db.saveItem(todoItem);
TODOItem addedItem = await db.getItem(savedItemId);
setState(() {
_itemList.insert(0, addedItem);
});
print("Item saved id: $savedItemId");
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: Column(
children: <Widget>[
new Flexible(
child: ListView.builder(
padding: EdgeInsets.all(8.0),
reverse: false,
itemCount: _itemList.length,
itemBuilder: (__, int index) {
return Card(
color: Colors.black12,
child: new ListTile(
title: _itemList[index],
onLongPress: () => _updateItem(_itemList[index], index),
trailing: new Listener(
key: new Key(_itemList[index].itemName),
child: Icon(
Icons.remove_circle,
color: Colors.redAccent,
),
onPointerDown: (pointerEvent) =>
_deleteToDo(_itemList[index].id, index),
),
),
);
},
),
),
new Divider(
height: 1.0,
)
],
),
floatingActionButton: FloatingActionButton(
tooltip: "Add Item",
child: ListTile(
title: Icon(Icons.add), //Basiicaly ı want
this in home class
),
onPressed: _showFormDialog,
),
);
}
void _showFormDialog() {
var alert = new AlertDialog(
content: Row(
children: <Widget>[
new Expanded(
child: new TextField(
controller: _textEditingController,
autofocus: true,
decoration: InputDecoration(
labelText: "Item",
hintText: "eg. Just Do It",
icon: Icon(Icons.note_add)),
),
)
],
),
actions: <Widget>[
new FlatButton(
onPressed: () {
_handleSubmitted(_textEditingController.text);
_textEditingController.clear();
Navigator.pop(context);
},
child: Text("Save"),
),
FlatButton(
onPressed: () => Navigator.pop(context),
child: Text("Cancel"),
)
],
);
void _handleSubmittedUpdate(int index, TODOItem item) {
setState(() {
_itemList.removeWhere((element) {
_itemList[index].itemName == item.itemName;
});
});
}
...
}
导入“包:entercor/Model/todoitem.dart”;
导入“包:entercor/Util/database_client.dart”;
导入“package:entercor/Util/dateformatter.dart”;
进口“包装:颤振/材料.省道”;
类看板屏幕扩展StatefulWidget{
@凌驾
_看板屏幕状态createState()=>u看板屏幕状态();
}
类_看板屏幕状态扩展状态{
最终文本编辑控制器\u文本编辑控制器=
新建TextEditingController();
var db=new DatabaseHelper();
最终列表_itemList=[];
@凌驾
void initState(){
super.initState();
_readToDoList();
}
void\u handleSubmitted(字符串文本)异步{
_textEditingController.clear();
TODOItem TODOItem=新的TODOItem(文本,dateFormatted());
int savedItem=wait db.saveItem(todoItem);
TODOItem addedItem=wait db.getItem(savedItem);
设置状态(){
_项目列表。插入(0,添加项);
});
打印(“项目保存id:$savedItem”);
}
@凌驾
小部件构建(构建上下文){
返回脚手架(
正文:专栏(
儿童:[
新柔性(
子项:ListView.builder(
填充:边缘设置。全部(8.0),
反面:错,
itemCount:_itemList.length,
itemBuilder:(_uu,int索引){
回程卡(
颜色:颜色。黑色,
孩子:新的ListTile(
标题:_itemList[索引],
onLongPress:()=>_updateItemItem(_itemList[index],index),
跟踪:新侦听器(
键:新键(_itemList[index].itemName),
子:图标(
图标。删除“”圆,
颜色:Colors.redAccent,
),
onPointerDown:(pointerEvent)=>
_deleteToDo(_itemList[index].id,index),
),
),
);
},
),
),
新分隔器(
高度:1.0,
)
],
),
浮动操作按钮:浮动操作按钮(
工具提示:“添加物品”,
孩子:ListTile(
标题:Icon(Icons.add),//basicalyıwant
这是在家庭课上
),
onPressed:\u showFormDialog,
),
);
}
void_showFormDialog(){
var alert=新建警报对话框(
内容:行(
儿童:[
新扩展(
孩子:新文本字段(
控制器:_textededitingcontroller,
自动对焦:对,
装饰:输入装饰(
标签文字:“物品”,
hintText:“就这么做吧”,
图标:图标(Icons.note_add)),
),
)
],
),
行动:[
新扁平按钮(
已按下:(){
_handleSubmitted(_textEditingController.text);
_textEditingController.clear();
Navigator.pop(上下文);
},
子项:文本(“保存”),
),
扁平按钮(
onPressed:()=>Navigator.pop(上下文),
子项:文本(“取消”),
)
],
);
void _handleSubmittedDupDate(整数索引,TODOItem项){
设置状态(){
_itemList.removeWhere((元素){
_itemList[index].itemName==item.itemName;
});
});
}
...
}
方法是否非私有-将
\u show
重命名为show
如果您的方法、字段或类名以
\u
-symbol开头-它们是私有的方法是否非私有-重命名\u show
为show
如果方法、字段或类名以
\u
-symbol开头-它们是私有的将showFormDialog更改为showFormDialog不起作用。演示如何准确调用此方法。我可以在不创建类实例的情况下执行此操作-当然,您必须在此处将此方法设置为静态浮动ActionButton(heroTag:'FAB2',child:Icon(Icons.share,color:Colors.white,),onPressed://\uuu showFormDialog,),在这种情况下,您试图在同一类中调用private methon。更改您的问题-显示您希望在另一类中如何准确调用此methon