【问题标题】:Flutter Google Maps resized when keyboard popup键盘弹出时颤动谷歌地图调整大小
【发布时间】:2019-10-19 17:08:14
【问题描述】:

我使用Stack 小部件来覆盖google_maps_flutterTextField。然而,当我专注于TextField 并且当键盘输入弹出时,Google Maps 似乎会变小。

我尝试使用 SingleChildScrollView 小部件进行包装以忽略调整大小,但在实施时它给了我错误。

class _DashboardState extends State<Dashboard> {
  // Google maps
  Completer<GoogleMapController> _controller = Completer();
  // remove this and use gps system instead
  CameraPosition _initialPosition =
      CameraPosition(target: LatLng(26.8206, 30.8025));
  final String tagLineFamily = 'Gafata';
  final Color _baseColor = Color.fromRGBO(101, 200, 208, 1.0);
  final Color _darkBlue = Color.fromRGBO(44, 88, 113, 1.0);

  // search text controller
  var _searchText = TextEditingController();

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Stack(
        children: <Widget>[
          _ayudaMap(),
          _appBar(),
        ],
      ),
    );
  }

  Widget _appBar() {
    return SingleChildScrollView(
      physics: const NeverScrollableScrollPhysics(),
      child: Container(
        height: 120,
        width: MediaQuery.of(context).size.width,
        padding: EdgeInsets.only(top: MediaQuery.of(context).padding.top),
        decoration: BoxDecoration(
          gradient: LinearGradient(
            colors: [
              _baseColor,
              Colors.transparent,
            ],
            begin: Alignment.topCenter,
            end: Alignment.bottomCenter,
          ),
          boxShadow: [BoxShadow(color: Colors.transparent)],
        ),
        child: Center(
          child: _searchTextField(),
        ),
      ),
    );
  }

  Widget _searchTextField() {
    return Container(
      padding: EdgeInsets.only(left: 10, right: 10),
      alignment: Alignment.center,
      height: 40,
      width: MediaQuery.of(context).size.width / 1.5,
      decoration: BoxDecoration(
        color: _baseColor.withOpacity(0.5),
        borderRadius: BorderRadius.all(
          Radius.circular(20),
        ),
        border: Border.all(
          width: 2.0,
          color: _darkBlue,
        ),
      ),
      child: TextField(
        cursorColor: _darkBlue,
        style: TextStyle(
          fontFamily: tagLineFamily,
          fontSize: 14,
          color: _darkBlue,
          fontWeight: FontWeight.w600,
        ),
        controller: _searchText,
        decoration: InputDecoration(
          border: InputBorder.none,
          hintText: 'Need Assistance? Find here!',
          hintStyle: TextStyle(
            color: _darkBlue,
          ),
          icon: Icon(
            Icons.search,
            color: _darkBlue,
          ),
        ),
      ),
    );
  }

  Widget _ayudaMap() {
    return GoogleMap(
      onMapCreated: _onMapCreated,
      initialCameraPosition: _initialPosition,
    );
  }

  // Google Maps controller
  void _onMapCreated(GoogleMapController controller) {
    _controller.complete(controller);
  }
}

我想要实现的是在弹出键盘输入时忽略调整大小。

【问题讨论】:

    标签: google-maps flutter dart


    【解决方案1】:

    尝试编辑您的脚手架以包含此参数

    resizeToAvoidBottomPadding : false,
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-06-18
      • 1970-01-01
      • 2012-12-17
      • 2016-02-25
      • 1970-01-01
      • 2015-01-16
      • 2014-07-22
      • 2020-01-26
      相关资源
      最近更新 更多