我试图在onPressed方法退出按钮后调用_signOut函数。但是它没有(识别函数或让我调用它),但是我可以调用call widget.Onsignedout,它的父级回调,一切都按预期工作。除了我在auth.signout上注销用户,然后回叫只是为了更新表单。如何从状态类访问_signOut()?谢谢
import 'package:flutter/material.dart';
import 'package:login_demo/auth.dart';
import 'package:login_demo/root_page.dart';
class HomePage extends StatefulWidget {
HomePage({this.auth, this.onSignedOut});
final BaseAuth auth;
//To call a function of a parent, you can use the callback pattern
final VoidCallback onSignedOut;
void _signOut() async {
try {
Text('Signing Out here');
await auth.signOut();
onSignedOut;
} catch (e) {
print(e);
}
}
@override
_HomePageState createState() => _HomePageState();
}
class _HomePageState extends State<HomePage> {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Homepage'),
actions: <Widget>[
FlatButton(
child: Text(
'Logout',
style: TextStyle(fontSize: 17.0, color: Colors.white)
),
onPressed: widget.onSignedOut,
),
],
),
body: Container(
child: Center(
child: Text(
'Welcome',
style: TextStyle(fontSize: 32.0),
),
),
),
);
}
}
答案 0 :(得分:2)
您需要公开您的方法。现在,由于名称前带有下划线(_
),该方法是私有的,您无法访问它。
只需将名称从_signOut
更改为signOut
,然后您就可以通过widget.signOut()
来调用它了。