LoginSignup
0
0

More than 1 year has passed since last update.

【Flutter】「Error: Method invocation is not a constant expression.」のエラー解決

Last updated at Posted at 2022-11-07
1 / 2

初めに

Dart言語を用いた、フレームワーク「Flutter」でのネイティブアプリ開発の時に起きたエラーです。備忘録としてメモ書きしておきますので、誰かの参考になればと思います。

##現状の問題
以下のようにコードを実行すると、Error: Method invocation is not a constant expression.というエラーが出てきます。

mappage.dart
import 'package:flutter/material.dart';
import 'package:geocoding/geocoding.dart';
import 'package:geolocator/geolocator.dart';
import 'package:google_maps_flutter/google_maps_flutter.dart';

class MapPage extends StatefulWidget {
  const MapPage({Key? key}) : super(key: key);
=================
コード省略
=================

  @override
  Widget build(BuildContext context) {
    return Scaffold(
        body: SafeArea(
      child: Column(
        children: [
          const TextField(
            decoration: InputDecoration(
              border: OutlineInputBorder(),
            ),
            onSubmitted: (value) async {
              CameraPosition result = await serchLatLng(value);
              _controller.animateCamera(CameraUpdate.newCameraPosition(result));
            },
          ),
          Expanded(
            child: GoogleMap(
              markers: _markers,
              initialCameraPosition: _initialPosition,
              onMapCreated: (GoogleMapController controller) async {
                await getCurrentPosition();
                _controller = controller;
                setState(() {
                  _markers.add(
                    Marker(
                        markerId: const MarkerId('3'),
                        position: currentPosition.target,
                        infoWindow: const InfoWindow(title: '現在地')),
                  );
                });
                _controller.animateCamera(
                    CameraUpdate.newCameraPosition(currentPosition));
              },
              myLocationEnabled: true,
              myLocationButtonEnabled: true,
            ),
          ),
        ],
      ),
    ));
  }
}

スクリーンショット 2022-11-07 21.19.43.png

問題

色々調べてみましたが、全然解決策が出てこず、苦戦していました。
結論から言うと、とても簡単なエラーでした。TextField()理由は、親Widgetにconstが入っていたものが原因となっていました。

解決策

TextField()の前にconstを取り除くことで、簡単にエラーが解消されました。

mappage.dart
  @override
  Widget build(BuildContext context) {
    return Scaffold(
        body: SafeArea(
      child: Column(
        children: [
          TextField(
            decoration: InputDecoration(
              border: OutlineInputBorder(),
            ),
            onSubmitted: (value) async {
              CameraPosition result = await serchLatLng(value);

ぜひ、同じ境遇でお困りの方は、参考にしていただければと思います。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0