添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
Collectives™ on Stack Overflow

Find centralized, trusted content and collaborate around the technologies you use most.

Learn more about Collectives

Teams

Q&A for work

Connect and share knowledge within a single location that is structured and easy to search.

Learn more about Teams

I have a page that displays an InAppWebView. I want to stack a widget on top of it. When I open the page, it displays the stacked widget for a split second but once the web view loads, the stacked widget disappears. I opened the flutter inspector and the widget does exist on the page, it just looks like it is hidden underneath the web view. Do I need to take a different approach here when stacking widgets on top of the 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;

You can copy paste run full code below
You can change sequence and use Positioned to position OfflineBar
code snippet

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()),

working demo

full code

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/")),
        

Thanks for contributing an answer to Stack Overflow!

  • Please be sure to answer the question. Provide details and share your research!

But avoid

  • Asking for help, clarification, or responding to other answers.
  • Making statements based on opinion; back them up with references or personal experience.

To learn more, see our tips on writing great answers.