Dart 颤振:从另一个路由刷新另一个小部件状态

Dart 颤振:从另一个路由刷新另一个小部件状态,dart,flutter,Dart,Flutter,在HompePage,我导航到设置页面,使用 Navigator.push( context, new MaterialPageRoute( builder: (BuildContext context) => Settings())); Settings()页面包含一个int输入,允许用户指定希望在主页上查看的帖子数量。当用户输入数字和form.save时,该值存储在SharedReferences中。但是当用户返回主页时,最初的帖子数量仍

在HompePage,我导航到设置页面,使用

 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');
  }
}