在小部件之间传递数据

时间:2019-10-29 04:25:29

标签: flutter

我有一个父窗口小部件_CalendarPageState和两个子窗口小部件nameColumnContainer2nameColumn2。我在int listLoc = list.indexOf(time);的{​​{1}}下有一个数据,我想向下传递到nameColumnContainer2

nameColumn2

如何将数据传递给父窗口小部件,以便在两个窗口小部件中都可用?

2 个答案:

答案 0 :(得分:0)

您应该在父窗口小部件中或直接在main.dart中使用BlocProvider小部件。

这是一个例子:

  • 首先声明您的BlocProvider
final MainBloc mainBloc = MainBloc();
return BlocProvider(
    bloc: mainBloc,
    child: MaterialApp(
        initialRoute: '/CalendarPage',
        onGenerateRoute: router.generator,
    ),
);
  • BlocProvider内容
class BlocProvider extends InheritedWidget {
    final MainBloc bloc;
    final Widget child;

    BlocProvider({Key key, @required this.child, @required this.bloc}) : super(key: key);

    static BlocProvider of(BuildContext context) {
        return context.inheritFromWidgetOfExactType(BlocProvider);
    }

    @override
    bool updateShouldNotify(InheritedWidget oldWidget) {
        return null;
    }
}

  • 创建一个集团(以便您可以将自己的逻辑与ui分开)并填写所需的数据
class MainBloc {
    //Declare the data you need in your tree
}
  • 最后恢复您在父母/子女中的数据
your_data = BlocProvider.of(context).bloc.your_data;

答案 1 :(得分:0)

我只需要将listLoc传递给nameColumn2