我正在尝试使用库提供程序中的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
答案 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>