Dart 颤振:从另一个路由刷新另一个小部件状态
在HompePage,我导航到设置页面,使用Dart 颤振:从另一个路由刷新另一个小部件状态,dart,flutter,Dart,Flutter,在HompePage,我导航到设置页面,使用 Navigator.push( context, new MaterialPageRoute( builder: (BuildContext context) => Settings())); Settings()页面包含一个int输入,允许用户指定希望在主页上查看的帖子数量。当用户输入数字和form.save时,该值存储在SharedReferences中。但是当用户返回主页时,最初的帖子数量仍
Navigator.push(
context,
new MaterialPageRoute(
builder: (BuildContext context) => Settings()));
Settings()
页面包含一个int
输入,允许用户指定希望在主页上查看的帖子数量。当用户输入数字和form.save时,该值存储在SharedReferences
中。但是当用户返回主页时,最初的帖子数量仍然存在。我希望主页
状态刷新,以便用户在设置页面指定的帖子数量将在表单保存后立即生效
下面是我的一些代码片段
这是设置()
页面上的表单\u submit
_submit() async {
final form = _formKey.currentState;
SharedPreferences prefs = await SharedPreferences.getInstance();
if (form.validate()) {
prefs.setInt('defaultField', newva);
form.save();
final mysb = SnackBar(
duration: Duration(seconds: 1),
content: new Text(
'Data Saved Successfully',
style: TextStyle(
color: Colors.white,
fontWeight: FontWeight.bold,
),
),
backgroundColor: Colors.red,
);
_scaffoldKey.currentState?.showSnackBar(mysb);
myHomePageState.setState(() {
newSULength = newva;
});
print('Done for $newva');
}
}
这是我的MyHomePage()
MyHomePageState MyHomePageState=新建MyHomePageState();
类MyHomePage扩展StatefulWidget{
MyHomePage({Key,this.title}):超级(Key:Key);
最后的字符串标题;
@凌驾
State createState()=>新建MyHomePageState();
的静态MyHomePageState(BuildContext上下文){
final MyHomePageState navigator=context.ancestorStateOfType(const TypeMatcher());
断言(){
如果(导航器==null){
抛出新错误('Error occoured');
}
返回true;
}());
返回导航器;
}
}
类MyHomePageState扩展了状态{
int newSULength=0;
void initState(){
//TODO:实现initState
super.initState();
loadDF();
}
设置新值(字符串值)=>setState(()=>\u字符串=值);
loadDF()异步{
SharedReferences prefs=等待SharedReferences.getInstance();
设置状态(){
newSULength=(prefs.getInt('defaultField')??5);
对于(int i=0;i
您可以使用回调
指示主页
,设置
页面更改了共享首选项中的某些值。提及
MyHomePageState myHomePageState = new MyHomePageState();
class MyHomePage extends StatefulWidget {
MyHomePage({Key key, this.title}) : super(key: key);
final String title;
@override
State<MyHomePage> createState() => new MyHomePageState();
static MyHomePageState of(BuildContext context){
final MyHomePageState navigator = context.ancestorStateOfType(const TypeMatcher<MyHomePageState>());
assert(() {
if(navigator == null) {
throw new FlutterError('Error occoured');
}
return true;
}());
return navigator;
}
}
class MyHomePageState extends State<MyHomePage> {
int newSULength = 0;
void initState() {
// TODO: implement initState
super.initState();
loadDF();
}
set newle(String value) => setState(() => _string = value);
loadDF() async {
SharedPreferences prefs = await SharedPreferences.getInstance();
setState(() {
newSULength = (prefs.getInt('defaultField') ?? 5);
for (int i = 0; i < newSULength; i++) {
\\todos
}
});
print('Done');
}
}