blob: c30059c39fcbd248c2337c1d400513dfb6d18bd1 [file] [log] [blame]
// Copyright 2019 The Flutter Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
import 'package:flutter/widgets.dart';
import 'package:provider/provider.dart';
import '../service/google_authentication.dart';
import '../state/agent.dart';
import '../state/build.dart';
import '../state/index.dart';
class StateProvider extends StatelessWidget {
const StateProvider({
Key key,
this.signInService,
this.indexState,
this.agentState,
this.buildState,
this.child,
}) : super(key: key);
final GoogleSignInService signInService;
final IndexState indexState;
final AgentState agentState;
final BuildState buildState;
final Widget child;
@override
Widget build(BuildContext context) {
return MultiProvider(
providers: <ValueProvider<Object>>[
ValueProvider<GoogleSignInService>(value: signInService),
ValueProvider<IndexState>(value: indexState),
ValueProvider<AgentState>(value: agentState),
ValueProvider<BuildState>(value: buildState),
],
child: child,
);
}
}
/// Similar to Provider.value but doesn't complain when
/// the value is a Listenable.
class ValueProvider<T> extends InheritedProvider<T> {
ValueProvider({
Key key,
@required T value,
UpdateShouldNotify<T> updateShouldNotify,
Widget child,
}) : super.value(
key: key,
value: value,
updateShouldNotify: updateShouldNotify,
child: child,
);
}