gpt4 book ai didi

flutter - 从另一个有状态的小部件类中获取文本字段数据

转载 作者:IT王子 更新时间:2023-10-29 07:17:20 25 4
gpt4 key购买 nike

我试图通过访问状态类的方法来查看来自另一个类的文本字段数据。单击按钮时,我想在另一个类中获取文本字段值。

我尝试调用应该返回一个字符串的方法,但是当我尝试从其他类访问它时我没有得到任何值。

class TitleWidget extends StatefulWidget{
final IncidentComponent data;
String titleVal;
TitleWidget(this.data);
@override
TitleWidgetState createState() => TitleWidgetState();
}

class TitleWidgetState extends State<TitleWidget>{

final titleController = TextEditingController();

titleTextValue() {
print("title text field: ${titleController.text}");
return titleController.text;
}

@override
void initState() {
super.initState();
titleController.addListener(titleTextValue);
}

@override
Widget build(BuildContext context) {
return TextField(
controller: titleController);

}
}

我试图访问上述方法以获取另一个类中的字符串。

FloatingActionButton.extended(
label: Text("Complete Report",
onPressed: () { print('title is ' + TitleWidgetState().titleTextValue()); }
)

每当我按下其他类(class)的 FAB 按钮时,我都期待文本字段值。但是我从其他类方法中一无所获。但是 titleTextValue() 方法的 print 语句打印了文本字段的正确值。

最佳答案

试试这家全局商店。它可以节省大量传递各种对象的工作。最终你需要掌握 Bloc 。

import 'package:flutter_web/material.dart';
import 'package:flutter_web/widgets.dart';

void main() {
runApp(new MyApp());
}

class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return new MaterialApp(
home: new Scaffold(
body: new Column(
mainAxisAlignment: MainAxisAlignment.spaceAround,
children: <Widget>[
new MyStatefulWidget1(),
new MyStatefulWidget2(),
],
),
),
);
}
}

class MyStatefulWidget1 extends StatefulWidget {
State createState() => new MyStatefulWidget1State();
}

class MyStatefulWidget1State extends State<MyStatefulWidget1> {
final titleController = TextEditingController();

titleTextValue() {
print("title text field: ${titleController.text}");
return titleController.text;
}

@override
Widget build(BuildContext context) {
store.set("titleTextValue", titleTextValue);
return TextField(controller: titleController);
}
}

class MyStatefulWidget2 extends StatefulWidget {
State createState() => new MyStatefulWidget2State();
}

class MyStatefulWidget2State extends State<MyStatefulWidget2> {
String _text = 'PRESS ME';

@override
Widget build(BuildContext context) {
var titleTextValue = store.get("titleTextValue");
return new Center(
child: new RaisedButton(
child: new Text(_text),
onPressed: () {
print('title is ' + titleTextValue());
}),
);
}
}

class GlobalState {
final Map<dynamic, dynamic> _data = <dynamic, dynamic>{};

static GlobalState instance = GlobalState._();
GlobalState._();

set(dynamic key, dynamic value) => _data[key] = value;
get(dynamic key) => _data[key];
}

final GlobalState store = GlobalState.instance;

关于flutter - 从另一个有状态的小部件类中获取文本字段数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56941038/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com