簡體   English   中英

未處理的異常:異常:請在 flutter 中提供 ShowCaseView 上下文

[英]Unhandled Exception: Exception: Please provide ShowCaseView context in flutter

我正在嘗試在 flutter 應用程序中使用 package ShowoCaseView ,這是我所做的步驟:

  GlobalKey _oneShowcaseKey = GlobalKey();

  startShowCase() {
    WidgetsBinding.instance.addPostFrameCallback((_) async {
      ShowCaseWidget.of(context).startShowCase([_oneShowcaseKey]);
    });
  }

  @override
  void initState() {
startShowCase();
    super.initState();
  }

  @override
  Widget build(BuildContext context) {
    super.build(context);
    return ShowCaseWidget(
        builder: Builder(
      builder: (context) => Scaffold(
                                child: Showcase(
                                  key: _oneShowcaseKey,
                                  title: 'Menu',
                                  description: 'Click here to see menu options',
                                  child: Column())

)

這是我在我的應用程序中實現 package 的方式,但我收到此錯誤:

[ERROR:flutter/lib/ui/ui_dart_state.cc(177)] Unhandled Exception: Exception: Please provide ShowCaseView context

我也有問題。
我更改為將“ShowCaseWIdget”寫入父小部件,如下所示,此問題已解決。

class SolvedStatelessWidget extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
        body: ShowCaseWidget(
            builder: Builder(builder: (context) => SolvedStatefulWidget())));
  }
}

class SolvedStatefulWidget extends StatefulWidget {
  @override
  _SolvedStatefulWidgetState createState() => _SolvedStatefulWidgetState();
}

class _SolvedStatefulWidgetState extends State<SolvedStatefulWidget> {
      GlobalKey _oneShowcaseKey = GlobalKey();
    
      startShowCase() {
        WidgetsBinding.instance.addPostFrameCallback((_) async {
          ShowCaseWidget.of(context).startShowCase([_oneShowcaseKey]);
        });
      }
    
      @override
      void initState() {
        startShowCase();
        super.initState();
      }
    
      @override
      Widget build(BuildContext context) {
        super.build(context);
        return yourWidget()
    
    )

不要將 Scaffold 包裹在 ShowCaseWidget 中。 相反,將此包裝到主導航點。

例如:使用 onGenerateRoute:

return setTransition(ShowCaseWidget(
        builder: Builder(
          builder: (_) => DashboardView(map),
        ),
      ));

希望這能解決您的問題,如果您仍然發現任何問題,請詢問您。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM