【问题标题】:Flutter Firestore error with BLoC pattern带有 BLoC 模式的 Flutter Firestore 错误
【发布时间】:2019-07-24 13:28:37
【问题描述】:

flutter 的新手有很多东西,现在才开始弄清楚它是 BLoC 模式,现在我遇到了问题 我不明白如何解决这个错误,似乎所有内容都写对了 这里是所有 BLoC 的通用接口

abstract class BlocBase {
  void dispose();
}

class BlocProvider<T extends BlocBase> extends StatefulWidget {
  BlocProvider({
    Key key,
    @required this.child,
    @required this.bloc,
  }) : super(key: key);

  final T bloc;
  final Widget child;

  @override
  _BlocProviderState<T> createState() => _BlocProviderState<T>();

  static T of<T extends BlocBase>(BuildContext context) {
    final type = _typeOf<BlocProvider<T>>();
    BlocProvider<T> provider = context.ancestorWidgetOfExactType(type);
    return provider.bloc;
  }

  static Type _typeOf<T>() => T;
}

class _BlocProviderState<T> extends State<BlocProvider<BlocBase>> {
  @override 
  void dispose() {
    widget.bloc.dispose();
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    return widget.child;
  }
}

这是我使用 BLoC 的第二个文件,它给出了错误 这里我使用函数 validateAndCreateData 来添加门票

@override
  Widget build(BuildContext context) {
    final bloc = BlocProvider.of<TicketsBloc>(context);
    return Scaffold(
        drawer: MyDrawer(),
        appBar: AppBar(
            title: Text('Sports'),
            backgroundColor: Colors.blueGrey[900],
            // automaticallyImplyLeading: false,
            actions: <Widget>[
              IconButton(
                  icon: Icon(Icons.share),
                  tooltip: 'Share',
                  onPressed: () {
                    Navigator.of(context).pushNamed('/second_screen');
                  }),
              IconButton(
                  icon: Icon(Icons.account_circle),
                  tooltip: 'Your account',
                  onPressed: () {
                    Navigator.of(context)
                        .pushReplacementNamed('/account_screen');
                  }),
              IconButton(
                icon: Icon(Icons.add),
                tooltip: 'Add Tickets',
                onPressed: () => validateAndCreateData(bloc),
              )
            ]),
        body: MyTab(),
    );
  }
void validateAndCreateData(TicketsBloc bloc) async {
      bloc.createData(description, image, name, price);

  }

【问题讨论】:

    标签: firebase flutter google-cloud-firestore


    【解决方案1】:

    您的错误意味着您无权访问该集团。您必须使用提供程序包装您的应用程序。如果不是,你不能从这里继承。

    return BlocProvider(
        child: MaterialApp(
          title: 'My App',
          home: HomeScreen(),
      ),
    );
    

    【讨论】:

      猜你喜欢
      • 2019-02-07
      • 2023-03-12
      • 2021-10-13
      • 2019-07-19
      • 1970-01-01
      • 2021-02-09
      • 2019-05-23
      • 2021-01-16
      • 2021-08-08
      相关资源
      最近更新 更多