【问题标题】:Flutter/Dart Reload widget and send new dataFlutter/Dart 重新加载小部件并发送新数据
【发布时间】:2023-04-01 21:10:01
【问题描述】:

我想在小部件中有一个文本字段,您可以在其中搜索某些内容。如果字符串发生更改,则应重新加载小部件并发送新数据。 我已经阅读了很多关于回调函数的内容,不幸的是我不太了解它。 您将在下面找到示例代码: 感谢您的帮助

class _HomepageState extends State<Homepage> {
  String data;
  String day;
  ...
  TextField(
   onChanged: (str){
     setState(() {
      data = str;
     });
    },
   ),
   ...
 Nextpage(data: data, day: day,)
 ...
}
class Nextpage extends StatefulWidget {
  final String data;
  final String day;
  Nextpage({this.data, this.day});
...
print(widget.data);
...
}

【问题讨论】:

  • 您共享的代码似乎没有任何本质上的错误。您能否澄清一下您要实现的目标并可能分享更多代码?

标签: flutter dart


【解决方案1】:

下面是一个例子,你有一个TextField,当它的输入改变时,文本显示在不同的Text小部件上(你可以复制它并将它粘贴到DartPad,看看它是如何工作的行动)。

import 'package:flutter/material.dart';

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

class MyApp extends StatefulWidget {
  @override
  _MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  String myText = '';

  TextField buildTextField() {
    return TextField(
      decoration: InputDecoration(
        labelText: 'Enter Text',
      ),
      onChanged: (changedText) => updateText(changedText),
      onEditingComplete: () => print("complete"),
    );
  }

  void updateText(newText) {
    setState(() {
      myText = newText;
    });
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
        title: "Example",
        theme: ThemeData(primarySwatch: Colors.deepPurple),
        home: Scaffold(
          body: Container(
            child: Column(
                mainAxisAlignment: MainAxisAlignment.spaceEvenly,
                children: [
                  buildTextField(),
                  Text(myText),
                ]),
          ),
        ));
  }
}

回调是这部分代码:

onChanged: (changedText) => updateText(changedText)

回调函数是updateText。

这是另一个回调示例,在编辑完成后调用print函数(回调函数)。

onEditingComplete: () => print("complete")

我希望这会有所帮助。

【讨论】:

  • 感谢 OsaXma 的快速回复。不幸的是,它并没有完全解决我的问题,所以我尝试了类似的方法。但是我想在一个类中有一个文本字段,每当这种情况发生变化时,当前数据应该被发送到一个新的类,然后更新。
猜你喜欢
  • 2020-04-01
  • 2018-12-15
  • 2019-06-09
  • 1970-01-01
  • 2019-07-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-28
相关资源
最近更新 更多