我需要获取其他类(在状态类中)的功能,我的代码在第一类中:
import 'package:flutter/material.dart';
class Search extends StatefulWidget {
final Widget child;
Search({Key key, this.child}) : super(key: key);
_SearchState createState() => _SearchState();
}
class _SearchState extends State<Search> {
_title(){
return 'Lorem Ipsum Title';
}
@override
Widget build(BuildContext context) {
//...
}
}
然后上第二堂课:
import 'package:flutter/material.dart';
import 'partials/search.dart';
class Second extends StatelessWidget {
final Widget child;
Second({Key key, this.child}) : super(key: key);
@override
Widget build(BuildContext context) {
// I need import functions here, so I can use it on Scaffold
new Search();
return Scaffold(
appBar: new AppBar(
backgroundColor: Colors.blueAccent,
titleSpacing: 15,
title: _title() // like this
),
...
}
}
但是调用函数时出现错误,请帮忙,谢谢。
答案 0 :(得分:2)
您可以使用 Static 方法,也可以仅在类 Search 的实例上调用该方法,并且按照惯例 _ 仅用于命名本地方法/变量,只能由包装类使用。
示例1
class _SearchState extends State<Search> {
String title(){
return 'Lorem Ipsum Title';
}
class Second extends StatelessWidget {
...
@override
Widget build(BuildContext context) {
Search _search = Search();
return Scaffold(
appBar: new AppBar(
backgroundColor: Colors.blueAccent,
titleSpacing: 15,
title: _search.title() // like this
),
//...
)}
}
示例2
class _SearchState extends State<Search> {
Static String title(){
return 'Lorem Ipsum Title';
}
@override
Widget build(BuildContext context) {
//...
}
}
class Second extends StatelessWidget {
//...
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: new AppBar(
backgroundColor: Colors.blueAccent,
titleSpacing: 15,
title: Search.title() // like this
),
// ...
}
}
答案 1 :(得分:0)
在Dart中,您可以使用functions
和Object
并将其像参数一样发送,以便构造函数将其发送并在第二个类中使用。
Here是关于我所说内容的文档。
但是您不能使用(_),因为这将隐藏方法(它将变为私有),因此首先需要删除该方法,以便您能够以这种方式使用它。
现在您需要定义,该方法将在其他地方使用,因此您可以创建一个类并将其导入到您将要使用的任何位置。
结论: 首先需要知道该方法的用途,然后再实现更好的方法。