找不到在此使用者微件上方的正确提供者

时间:2019-05-20 04:24:19

标签: flutter provider

我正在尝试使用库提供程序中的multiprovider。 但这无法正常工作,因为尽管材料之前的上部小部件是MultiProvider,但找不到正确的提供者。

我已经尝试导入任何东西,但仍然无法正常工作

class _LoginViewState extends State<LoginView> {
  final TextEditingController _controller = TextEditingController();

  @override
  Widget build(BuildContext context) {
    return BaseView<LoginModel>(
      builder: (context, model, child) => Scaffold(
        backgroundColor: backgroundColor,
        body: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            StreamBuilder<Chat>(
              stream: Provider.of<Socketio>(context).streamChat,
              builder: (context, snapshot) {
                return Text(snapshot.data?.toString() ?? 'Foo');
              },
            ),
            LoginHeader(
              validationMessage: model.errorMessage,
              controller: _controller),
            model.state == ViewState.Busy
            ? CircularProgressIndicator()

那是我可以提供服务的地方。

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return  MultiProvider(
      providers: [
        StreamProvider<User>(
          initialData: User.initial(),
          builder: (context) => locator<AuthenticationService>().userController,
        ),
        StreamProvider<Chat>(
          initialData: Chat.initial(),
          builder: (context) => locator<Socketio>().chatController,
        ),
      ],
      child: MaterialApp(
        title: 'Flutter Demo',
        theme: ThemeData(),
        initialRoute: '/login',
        onGenerateRoute: Router.generateRoute,
      ),
    );
  }
}```
this is where I provider socket io provider before Maetrialapp inside Multi Provider

1 个答案:

答案 0 :(得分:0)

问题在于您在做

SELECT emp_id, sal, name
FROM EMP1
WHERE emp_id IN (SELECT TO_CHAR(empid) FROM emp2);

但是您永远不会创建Provider.of<Socketio>(context) 类型的提供程序

查看您的代码,您可能想使用:

Provider<Socketio>