Java 颤振访问私有值

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

我正在处理浮动动作栏,因为在看板类中,我的_show方法是私有的,所以我无法访问它。我曾尝试转换为静态,但后来我的数据库相关方法导致了问题。我不知道该怎么办有什么建议吗

这是我想要访问的类

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