【发布时间】:2020-11-20 16:22:14
【问题描述】:
我的 main.dart 中有一个 TextField,控制器名为 textcontroller。 在其他小部件(button.dart)中,我有一个按钮。如果我按下该按钮,它应该将 main.dart 中的 Text 小部件的文本设置为 TextField 的文本。只需执行与 main.dart 中的第一个按钮相同的操作即可。如何从其他小部件(文件)访问此 TextEditingController?
这是我的应用程序的视频,以便更好地理解。 https://streamable.com/xi0dn1
这是我的 main.dart 的完整代码
import 'button.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
debugShowCheckedModeBanner: false,
home: MyHomePage(),
);
}
}
class MyHomePage extends StatefulWidget {
MyHomePage({Key key, this.title}) : super(key: key);
final String title;
@override
MyHomePageState createState() => MyHomePageState();
}
class MyHomePageState extends State<MyHomePage> {
String var1 = "text1";
TextEditingController textController = TextEditingController();
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text("My app"),
),
body: Center(
child: Column(
children: <Widget>[
TextField(
controller: textController,
),
RaisedButton(
child: Text("button in the same widget"),
onPressed: () {
setState(() {
var1 = textController.text;
});
},
),
Text(var1),
Button2(),
],
),
),
);
}
}
这是我的 button.dart 代码
import 'main.dart';
class Button2 extends StatefulWidget {
@override
_Button2State createState() => _Button2State();
}
class _Button2State extends State<Button2> {
String var2 = "text2";
@override
Widget build(BuildContext context) {
return Center(
child: Column(
children: <Widget>[
RaisedButton(
child: Text("button in second widget"),
onPressed: () {
setState(() {
var2 = MyHomePageState().textController.text.toString();
});
},
),
Text(var2),
],
),
);
}
}
【问题讨论】: