【问题标题】:Stacking Widgets Over InAppWebView在 InAppWebView 上堆叠小部件
【发布时间】:2020-12-27 07:30:25
【问题描述】:

我有一个显示 InAppWebView 的页面。我想在它上面堆叠一个小部件。当我打开页面时,它会在一瞬间显示堆叠的小部件,但是一旦加载 Web 视图,堆叠的小部件就会消失。我打开了颤振检查器,页面上确实存在该小部件,它看起来就像隐藏在 Web 视图下方。在 InAppWebView 顶部堆叠小部件时,我是否需要在此处采用不同的方法?

class UnityFormViewPage extends StatefulWidget {
  final UnityForm _selectedForm;

  UnityFormViewPage(this._selectedForm);

  @override
  _UnityFormViewPageState createState() => _UnityFormViewPageState();
}

class _UnityFormViewPageState extends State<UnityFormViewPage> {
  String currentUrl = '';

  @override
  Widget build(BuildContext context) {
    return Material(
      child: Scaffold(
          appBar: AppBar(
            title: Text(widget._selectedForm.title),
            leading: IconButton(
                icon: Icon(Icons.arrow_back),
                onPressed: () {
                  Navigator.pop(context);
                }),
          ),
          body: Stack(
            children: [
              OfflineBar(),
              InAppWebView(
                initialUrl: widget._selectedForm.formUrl,
                onLoadStart: (InAppWebViewController controller, String url) {
                  setState(() {
                    this.currentUrl = url;
                  });
                },
              ),
            ],
          )),
    );
  }
}

【问题讨论】:

    标签: flutter stack flutterwebviewplugin


    【解决方案1】:

    您可以在下面复制粘贴运行完整代码
    您可以更改顺序并使用Positioned 定位OfflineBar
    代码sn-p

    Stack(
        children: [
          InAppWebView(
            initialUrl: widget._selectedForm.formUrl,
            onLoadStart: (InAppWebViewController controller, String url) {
              setState(() {
                this.currentUrl = url;
              });
            },
          ),
          Positioned(left: 0, right: 0, top: 20, child: OfflineBar()),
        ],
      )
    

    工作演示

    完整代码

    import 'package:flutter/material.dart';
    import 'package:flutter_inappwebview/flutter_inappwebview.dart';
    
    class UnityForm {
      String title;
      String formUrl;
    
      UnityForm({this.title, this.formUrl});
    }
    
    class UnityFormViewPage extends StatefulWidget {
      final UnityForm _selectedForm;
    
      UnityFormViewPage(this._selectedForm);
    
      @override
      _UnityFormViewPageState createState() => _UnityFormViewPageState();
    }
    
    class _UnityFormViewPageState extends State<UnityFormViewPage> {
      String currentUrl = '';
    
      @override
      Widget build(BuildContext context) {
        return Material(
          child: Scaffold(
              appBar: AppBar(
                title: Text(widget._selectedForm.title),
                leading: IconButton(
                    icon: Icon(Icons.arrow_back),
                    onPressed: () {
                      Navigator.pop(context);
                    }),
              ),
              body: Stack(
                children: [
                  InAppWebView(
                    initialUrl: widget._selectedForm.formUrl,
                    onLoadStart: (InAppWebViewController controller, String url) {
                      setState(() {
                        this.currentUrl = url;
                      });
                    },
                  ),
                  Positioned(left: 0, right: 0, top: 20, child: OfflineBar()),
                ],
              )),
        );
      }
    }
    
    class OfflineBar extends StatelessWidget {
      @override
      Widget build(BuildContext context) {
        return Container(color: Colors.purple, child: Text("OfflineBar"));
      }
    }
    
    void main() {
      runApp(MyApp());
    }
    
    class MyApp extends StatelessWidget {
      @override
      Widget build(BuildContext context) {
        return MaterialApp(
          title: 'Flutter Demo',
          theme: ThemeData(
            primarySwatch: Colors.blue,
            visualDensity: VisualDensity.adaptivePlatformDensity,
          ),
          home: UnityFormViewPage(
              UnityForm(title: "test", formUrl: "https://flutter.dev/")),
        );
      }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-11-25
      • 2013-05-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-30
      相关资源
      最近更新 更多