by @kodeazy
flutter No MaterialLocalizations found?
I was trying to add an Alert
in flutter but getting below error.
Error: No MaterialLocalizations found.
DynamicData widgets require MaterialLocalizations to be provided by a Localizations widget ancestor.
The material library uses Localizations to generate messages, labels, and abbreviations.
To introduce a MaterialLocalizations, either use a MaterialApp at the root of your application to include them automatically, or add a Localization widget with a MaterialLocalizations delegate.
The specific widget that could not find a MaterialLocalizations ancestor was:
DynamicData
The ancestors of this widget were:
[root]
at Object.throw_ [as throw] (http://localhost:49240/dart_sdk.js:5074:11)
at http://localhost:49240/packages/flutter/src/material/icon_button.dart.lib.js:49325:19
at Object.debugCheckHasMaterialLocalizations (http://localhost:49240/packages/flutter/src/material/icon_button.dart.lib.js:49332:24)
at MaterialLocalizations.of (http://localhost:49240/packages/flutter/src/material/icon_button.dart.lib.js:49371:20)
at alert.Alert.new.show (http://localhost:49240/packages/rflutter_alert/src/alert.dart.lib.js:868:352)
at show.next (<anonymous>)
at runBody (http://localhost:49240/dart_sdk.js:40657:34)
at Object._async [as async] (http://localhost:49240/dart_sdk.js:40688:7)
at alert.Alert.new.show (http://localhost:49240/packages/rflutter_alert/src/alert.dart.lib.js:867:20)
at http://localhost:49240/packages/quiz_appexample/main.dart.lib.js:296:119
at main._DynamicDataState.new.setState (http://localhost:49240/packages/flutter/src/widgets/widget_inspector.dart.lib.js:13410:22)
at http://localhost:49240/packages/quiz_appexample/main.dart.lib.js:287:30
at [_handleTap] (http://localhost:49240/packages/flutter/src/material/icon_button.dart.lib.js:41869:31)
at tap.TapGestureRecognizer.new.invokeCallback (http://localhost:49240/packages/flutter/src/gestures/recognizer.dart.lib.js:190:18)
at tap.TapGestureRecognizer.new.handleTapUp (http://localhost:49240/packages/flutter/src/gestures/tap.dart.lib.js:411:42)
at [_checkUp] (http://localhost:49240/packages/flutter/src/gestures/tap.dart.lib.js:217:12)
at tap.TapGestureRecognizer.new.handlePrimaryPointer (http://localhost:49240/packages/flutter/src/gestures/tap.dart.lib.js:166:23)
at tap.TapGestureRecognizer.new.handleEvent (http://localhost:49240/packages/flutter/src/gestures/recognizer.dart.lib.js:426:16)
at [_dispatch] (http://localhost:49240/packages/flutter/src/gestures/pointer_router.dart.lib.js:86:9)
at http://localhost:49240/packages/flutter/src/gestures/pointer_router.dart.lib.js:112:26
at LinkedMap.new.forEach (http://localhost:49240/dart_sdk.js:27742:11)
at [_dispatchEventToRoutes] (http://localhost:49240/packages/flutter/src/gestures/pointer_router.dart.lib.js:110:29)
at pointer_router.PointerRouter.new.route (http://localhost:49240/packages/flutter/src/gestures/pointer_router.dart.lib.js:105:37)
at binding$5.WidgetsFlutterBinding.new.handleEvent (http://localhost:49240/packages/flutter/src/gestures/binding.dart.lib.js:367:26)
at binding$5.WidgetsFlutterBinding.new.dispatchEvent (http://localhost:49240/packages/flutter/src/gestures/binding.dart.lib.js:355:24)
at binding$5.WidgetsFlutterBinding.new.dispatchEvent (http://localhost:49240/packages/flutter/src/rendering/layer.dart.lib.js:5438:13)
at [_handlePointerEventImmediately] (http://localhost:49240/packages/flutter/src/gestures/binding.dart.lib.js:331:14)
at binding$5.WidgetsFlutterBinding.new.handlePointerEvent (http://localhost:49240/packages/flutter/src/gestures/binding.dart.lib.js:305:43)
at [_flushPointerEventQueue] (http://localhost:49240/packages/flutter/src/gestures/binding.dart.lib.js:295:14)
at [_handlePointerDataPacket] (http://localhost:49240/packages/flutter/src/gestures/binding.dart.lib.js:286:54)
at Object.invoke1 (http://localhost:49240/dart_sdk.js:190888:7)
at _engine.EnginePlatformDispatcher.__.invokeOnPointerDataPacket (http://localhost:49240/dart_sdk.js:171345:15)
at [_onPointerData] (http://localhost:49240/dart_sdk.js:172281:49)
at http://localhost:49240/dart_sdk.js:172719:28
at http://localhost:49240/dart_sdk.js:172675:16
at loggedHandler (http://localhost:49240/dart_sdk.js:172380:11)
Below is my example code
main.dart
import 'package:flutter/material.dart';
import 'package:rflutter_alert/rflutter_alert.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
body: FlatButton(onPressed: (){
Alert(context: context, title: "Hurraih", desc: "Button Clicked Successfully.").show();
}, child: Text("Example Button"),
color: Colors.red,)
),
);
}
}
pubspec.yaml
Here I added rflutter_alert
dependency for Alert
.
dependencies:
flutter:
sdk: flutter
rflutter_alert: ^2.0.4
In the above code we added MaterialApp
widget inside MyApp
class.
Follow below Steps to resolve the issue
- Remove
MaterialApp
widget fromMyApp
class. - Add
MaterialApp
widget inmain
method. - Call the
MyApp
class frommain
method.
Below is the example syntax.
void main() {
runApp(MaterialApp(
home: MyApp(),
));
}
Below is the complete code after resolviong gthe error.
main.dart
import 'package:flutter/material.dart';
import 'package:rflutter_alert/rflutter_alert.dart';
void main() {
runApp(MaterialApp(
home: MyApp(),
));
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
body: FlatButton(onPressed: (){
Alert(context: context, title: "Hurraih", desc: "Button Clicked Successfully.").show();
}, child: Text("Example Button"),
color: Colors.red,)
);
}
}