flutter - Flutter:如何更改另一个 dart 文件中变量的状态?
问题描述
我目前正在开发一个应用程序;我想更改在另一个 dart 文件中声明的字符串的值,然后将更改后的状态传递给有状态小部件。
IE;
我创建了一个名为“Body.dart”的文件,其中我声明了一个名为“scale”的字符串,其值最初为“Empty”。
稍后当按下另一个 dart 文件“scale_button”中的按钮时,我想在我的 Body.dart 文件中分配字符串 scale =“Hello”。这样有状态的小部件也会在屏幕上显示相同的内容。
解决方案
在这种情况下,您可以使用provider
(或任何其他状态管理)包。在yaml
文件中添加,provider: ^4.3.2+4
class HomeApp extends StatefulWidget {
@override
_HomeAppState createState() => _HomeAppState();
}
class _HomeAppState extends State<HomeApp> {
StringProvider _stringProvider;
@override
void initState() {
super.initState();
_stringProvider = Provider.of<StringProvider>(context, listen: false);
}
void updateString() {
_stringProvider.setString('hai');
}
@override
Widget build(BuildContext context) {
StringProvider _stringProvider = Provider.of<StringProvider>(context);
return Scaffold(
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Container(
child: Text(
_stringProvider.str,
style: TextStyle(
fontSize: 22,
),
),
),
RaisedButton(
onPressed: updateString,
child: Text('Click'),
),
],
),
),
);
}
}
// class for storing data(StringProvider.dart)
import 'package:flutter/material.dart';
class StringProvider extends ChangeNotifier { // create a common file for data
String _str = 'hello';
String get str => _str;
void setString(String st) {
_str = st;
notifyListeners();
}
}
推荐阅读
- bash - bash 脚本错误,直到 [1: command not found
- python - TypeError:“方法”对象不可迭代 - Python
- python - Django中的图像不再显示
- reactjs - 如何在原生反应中滚动平面列表中的特定项目?
- ruby - 使用 Capybara、Rspec、Selenium-webdriver 的不可处理实体
- ssl - MSDeploy 失败并显示“错误:底层连接已关闭:发送时发生意外错误。”
- python - 是否可以在 Flask-WTForms 中设置标签的一部分?
- python - 在python中操作一个n级深度列表列表中的每个元素
- sql - 在 Sql Server Azure 上执行操作的用户权限不足
- c++ - 使用 LoadImage() 函数加载位图时出现问题