Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/185.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 颤振中的Ads重叠底部导航_Android_Flutter_Dart_Admob - Fatal编程技术网

Android 颤振中的Ads重叠底部导航

Android 颤振中的Ads重叠底部导航,android,flutter,dart,admob,Android,Flutter,Dart,Admob,我在颤振中设置了横幅广告,这些广告与底部导航栏重叠 我想在底部的导航栏下面显示广告 有没有办法在底部导航栏下方添加边距 我已经在home.dart(主页)上发布了广告 导入“包:provider/provider.dart”; 导入“../ui/widgets/bottom_nav_bar.dart”; 导入“../core/utils/theme.dart”; 导入“search_page.dart”; 导入“category.dart”; 导入“main_page.dart”; 导入“se

我在颤振中设置了横幅广告,这些广告与底部导航栏重叠

我想在底部的导航栏下面显示广告

有没有办法在底部导航栏下方添加边距

我已经在home.dart(主页)上发布了广告

导入“包:provider/provider.dart”; 导入“../ui/widgets/bottom_nav_bar.dart”; 导入“../core/utils/theme.dart”; 导入“search_page.dart”; 导入“category.dart”; 导入“main_page.dart”; 导入“settings.dart”; 进口“包装:颤振/材料.省道”; 导入“包:firebase_admob/firebase_admob.dart”; 导入“给你的飞镖”; 常量字符串AD_MOB_APP_ID='ca-APP-pub-3940256099942544~3347517113'; const String AD_MOB_TEST_DEVICE='dec3010b244516b43eb949f5d97d0f8-运行AD,然后检查设备日志中的值'; 常量字符串AD_MOB_AD_ID='ca-app-pub-3940256099942544/630978111'; 类主页扩展了StatefulWidget{ @凌驾 _HomePageState createState()=>\u HomePageState(); } 类_HomePageState扩展状态{ 班纳拉德(BannerAd);; 静态最终MobileAdTargetingInfo targetingInfo=新MobileAdTargetingInfo( testDevices:[广告移动测试设备], ); BannerAd createBannerAd(){ 返回新的横幅( adUnitId:AD_MOB_AD_ID, 大小:AdSize.banner, targetingInfo:targetingInfo, ); } 最终GlobalKey _scaffoldKey=新的GlobalKey(); int _selectedIndex=0; final PageController_PageController=PageController(); @凌驾 void initState(){ super.initState(); } @凌驾 无效处置(){ super.dispose(); _pageController.dispose(); } @凌驾 小部件构建(构建上下文){ final stateData=Provider.of(上下文); 最终主题数据状态=stateData.getTheme(); FirebaseAdMob.instance.initialize(appId:AD\u MOB\u APP\u ID); _bannerAd=createBannerAd()…load()…show(); 返回脚手架( 钥匙:_scaffoldKey, appBar:appBar( 标题:错误, 背景颜色:state.primaryColor, 海拔:0, 标题:正文( “RevWalls”, 样式:state.textTheme.headline, ), 行动:[ 图标按钮( 图标:图标( Icons.search, 颜色:state.textTheme.body1.color, ), onPressed:()=>showSearch( 上下文:上下文,委托:墙纸搜索(主题数据:状态)), ) ], ), 主体:容器( 颜色:state.primaryColor, 子:页面视图( 控制器:_pageController, 物理:弹跳CrollPhysics(), onPageChanged:(索引){ 设置状态(){ _selectedIndex=索引; }); }, 儿童:[ 主体(), 类别(), 为你(), setingspage(), ], ), ), 底部导航栏:底部导航栏( selectedIndex:\u selectedIndex, 未选择的颜色:state.textTheme.body1.color, 已选择:(索引){ _pageController.jumpToPage(索引); }, selectedColor:state.accentColor, 背景颜色:state.primaryColor, showElevation:false, 项目:[ 下鼻甲( 图标:图标(Icons.home), 标题:文本(“主页”), ), 下鼻甲( 图标:图标(图标.类别), 标题:文本(“子标题”), ), 下鼻甲( 图标:图标(Icons.phone_android), 标题:文本(“精确匹配”), ), 下鼻甲( 图标:图标(图标.设置), 标题:文本(“设置”), ), ], ), ); } 小部件旧体(主题数据状态){ 返回嵌套滚动视图( headerSliverBuilder:(BuildContext上下文,bool-boxisscrowled){ 返回[ 滑杆( 背景颜色:state.primaryColor, 标高:4, 标题:正文( “重播”, 样式:state.textTheme.headline, ), 行动:[ 图标按钮( 图标:图标(Icons.search,颜色:state.accentColor), 已按下:(){ showSearch( 上下文:上下文, 代表:壁纸搜索(主题数据:状态)); }, ) ], 浮动:是的, 固定:_selectedIndex==0?false:true, 快照:错, 标题:错误, ), ]; }, 主体:容器( 颜色:state.primaryColor, 子:页面视图( 控制器:_pageController, onPageChanged:(索引){ 设置状态(){ _selectedIndex=索引; }); }, 儿童:[ 主体(), 类别(), 为你(), setingspage(), ], ), ), ); } } 下面是底部的导航栏-

library bottom_navy_bar;

import 'package:flutter/material.dart';
import 'package:flutter/widgets.dart';

class BottomNavyBar extends StatelessWidget {

  final int selectedIndex;
  final double iconSize;
  final Color backgroundColor, selectedColor, unselectedColor;
  final bool showElevation;
  final Duration animationDuration;
  final List<BottomNavyBarItem> items;
  final ValueChanged<int> onItemSelected;

  BottomNavyBar(
      {Key key,
      this.selectedIndex = 0,
      this.showElevation = true,
      this.iconSize = 20,
      this.backgroundColor,
      this.selectedColor,
      this.unselectedColor,
      this.animationDuration = const Duration(milliseconds: 250),
      @required this.items,
      @required this.onItemSelected}) {
    assert(items != null);
    assert(items.length >= 2 && items.length <= 5);
    assert(onItemSelected != null);
  }


  Widget _buildItem(BottomNavyBarItem item, bool isSelected) {



    return AnimatedContainer(
      width: isSelected ? 120 : 50,
      height: double.maxFinite,
      duration: animationDuration,
      decoration: BoxDecoration(
        color: isSelected ? selectedColor.withOpacity(0.2) : backgroundColor,
        borderRadius: BorderRadius.all(Radius.circular(100.0)),
      ),
      alignment: Alignment.center,
      child: ListView(
        shrinkWrap: true,
        physics: NeverScrollableScrollPhysics(),
        scrollDirection: Axis.horizontal,
        children: <Widget>[
          Row(
            mainAxisAlignment: MainAxisAlignment.start,
            crossAxisAlignment: CrossAxisAlignment.center,
            children: <Widget>[
              Padding(
                padding: const EdgeInsets.only(right: 8),
                child: IconTheme(
                  data: IconThemeData(
                      size: iconSize,
                      color: isSelected ? selectedColor : unselectedColor),
                  child: item.icon,
                ),
              ),
              isSelected
                  ? DefaultTextStyle.merge(
                      style: TextStyle(
                          fontSize: 16,
                          color: selectedColor,
                          fontWeight: FontWeight.bold),
                      child: item.title,
                    )
                  : SizedBox.shrink()
            ],
          )
        ],
      ),
    );
  }


  @override
  Widget build(BuildContext context) {
    return Container(
      color: backgroundColor,
      child: Container(
        width: double.infinity,
        height: 55,
        padding: EdgeInsets.all(8),
        child: Row(
          mainAxisAlignment: MainAxisAlignment.spaceBetween,
          children: items.map((item) {
            var index = items.indexOf(item);
            return GestureDetector(
              onTap: () {
                onItemSelected(index);
              },
              child: _buildItem(item, selectedIndex == index),
            );
          }).toList(),
        ),
      ),
    );
  }
}

class BottomNavyBarItem {
  final Icon icon;
  final Text title;

  BottomNavyBarItem({
    @required this.icon,
    @required this.title,
  }) {
    assert(icon != null);
    assert(title != null);
  }
}
库底部\u海军\u栏;
进口“包装:颤振/材料.省道”;
导入“package:flatter/widgets.dart”;
类BottomNavyBar扩展了无状态小部件{
最终整数选择指数;
最终的双重认知;
最终颜色背景色、选定颜色、未选定颜色;
最终bool-show高程;
最终持续时间动画持续时间;
最后清单项目;
已选择最终值;
底部导航杆(
{键,
此.selectedIndex=0,
this.showElevation=true,
this.iconSize=20,
这个背景色,
这是我选择的颜色,
这是未选择的颜色,
this.animationDuration=常量持续时间(毫秒:250),
@需要此项,
@需要此选项(已选择}){
断言(项!=null);

assert(items.length>=2&&items.length您可以使用MediaQuery.of(contex
library bottom_navy_bar;

import 'package:flutter/material.dart';
import 'package:flutter/widgets.dart';

class BottomNavyBar extends StatelessWidget {

  final int selectedIndex;
  final double iconSize;
  final Color backgroundColor, selectedColor, unselectedColor;
  final bool showElevation;
  final Duration animationDuration;
  final List<BottomNavyBarItem> items;
  final ValueChanged<int> onItemSelected;

  BottomNavyBar(
      {Key key,
      this.selectedIndex = 0,
      this.showElevation = true,
      this.iconSize = 20,
      this.backgroundColor,
      this.selectedColor,
      this.unselectedColor,
      this.animationDuration = const Duration(milliseconds: 250),
      @required this.items,
      @required this.onItemSelected}) {
    assert(items != null);
    assert(items.length >= 2 && items.length <= 5);
    assert(onItemSelected != null);
  }


  Widget _buildItem(BottomNavyBarItem item, bool isSelected) {



    return AnimatedContainer(
      width: isSelected ? 120 : 50,
      height: double.maxFinite,
      duration: animationDuration,
      decoration: BoxDecoration(
        color: isSelected ? selectedColor.withOpacity(0.2) : backgroundColor,
        borderRadius: BorderRadius.all(Radius.circular(100.0)),
      ),
      alignment: Alignment.center,
      child: ListView(
        shrinkWrap: true,
        physics: NeverScrollableScrollPhysics(),
        scrollDirection: Axis.horizontal,
        children: <Widget>[
          Row(
            mainAxisAlignment: MainAxisAlignment.start,
            crossAxisAlignment: CrossAxisAlignment.center,
            children: <Widget>[
              Padding(
                padding: const EdgeInsets.only(right: 8),
                child: IconTheme(
                  data: IconThemeData(
                      size: iconSize,
                      color: isSelected ? selectedColor : unselectedColor),
                  child: item.icon,
                ),
              ),
              isSelected
                  ? DefaultTextStyle.merge(
                      style: TextStyle(
                          fontSize: 16,
                          color: selectedColor,
                          fontWeight: FontWeight.bold),
                      child: item.title,
                    )
                  : SizedBox.shrink()
            ],
          )
        ],
      ),
    );
  }


  @override
  Widget build(BuildContext context) {
    return Container(
      color: backgroundColor,
      child: Container(
        width: double.infinity,
        height: 55,
        padding: EdgeInsets.all(8),
        child: Row(
          mainAxisAlignment: MainAxisAlignment.spaceBetween,
          children: items.map((item) {
            var index = items.indexOf(item);
            return GestureDetector(
              onTap: () {
                onItemSelected(index);
              },
              child: _buildItem(item, selectedIndex == index),
            );
          }).toList(),
        ),
      ),
    );
  }
}

class BottomNavyBarItem {
  final Icon icon;
  final Text title;

  BottomNavyBarItem({
    @required this.icon,
    @required this.title,
  }) {
    assert(icon != null);
    assert(title != null);
  }
}
Column(
    children: [
                 Container(
                     height: MediaQuery.of(context).size.height - 60,
                     child: HomePage(),
                    ),
                 BannerAd(),
              ]
);
margin: const EdgeInsets.only(bottom: 50)
var paddingBottom = 60.0;
class MyApp extends StatelessWidget {
// This widget is the root of your application.
@override
Widget build(BuildContext context) {
//
return MaterialApp(
    debugShowCheckedModeBanner: false,
    title: 'World General info',
    //theme: ThemeData(primarySwatch: Colors.cyan,),
    theme: ThemeData(
      primaryColor: Colors.cyan,
      accentColor: Colors.green,
      textTheme: TextTheme(bodyText2: TextStyle(color: Colors.purple)),
    ),
    home: MyHomePage(title: 'World General Info'),
    builder: (BuildContext context, Widget child) {
      return new Padding(
        child: child,
        padding:  EdgeInsets.only(bottom: paddingBottom),
      );
    }
    );
}
}
bottomNavigationBar: Container(
    height: 50.0,
    color: Colors.white,
),