【发布时间】:2018-09-26 18:27:24
【问题描述】:
问题是当我想从回调导航时 - 由插件调用 - 新页面作为小部件推入我的页面内。
这是代码:
import 'dart:async';
import 'package:barcode_scan/barcode_scan.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
void main() {
runApp(new MaterialApp(
home: new MyApp(),
) );
}
class MyApp extends StatefulWidget {
@override
_MyAppState createState() => new _MyAppState();
}
class _MyAppState extends State<MyApp> {
String barcode = "";
@override
initState() {
super.initState();
}
@override
Widget build(BuildContext context) {
return new Scaffold(
appBar: new AppBar(
title: new Text('Barcode Scanner Example'),
),
body: new Center(
child: new Column(
children: <Widget>[
new Container(
child: new MaterialButton(
onPressed: scan, child: new Text("Scan")),
padding: const EdgeInsets.all(8.0),
),
],
),
));
}
Future scan() async {
try {
String barcode = await BarcodeScanner.scan();
print("${context}");
Navigator.push(context, MaterialPageRoute(
builder: (context) {
return new BarcodePage(barcode);}
));
setState(() => this.barcode = barcode);
} on PlatformException catch (e) {
if (e.code == BarcodeScanner.CameraAccessDenied) {
setState(() {
this.barcode = 'The user did not grant the camera permission!';
});
} else {
setState(() => this.barcode = 'Unknown error: $e');
}
} on FormatException{
setState(() => this.barcode = 'null (User returned using the "back"-button before scanning anything. Result)');
} catch (e) {
setState(() => this.barcode = 'Unknown error: $e');
}
}
}
class BarcodePage extends StatefulWidget {
BarcodePage(String s) {
str = s;
}
String str;
@override
State<StatefulWidget> createState() {
return _BarcodePageState(str);
}
}
class _BarcodePageState extends State<BarcodePage> {
String str;
_BarcodePageState(String s ){
str = s;
}
@override
Widget build(BuildContext context) {
return new Scaffold(
appBar: new AppBar(title: new Text("Bar code"),),
body: new Text(str),
);
}
}
您可以在https://github.com/arashbi/flutter_barcode_reader 示例文件夹中找到该应用程序
这与我之前的问题有关,但设置更简单。
【问题讨论】:
-
您可以尝试发布更多关于究竟是什么问题的信息吗?是视觉上的吗?我试图在没有你的插件的情况下重现这个,我没有从这段代码中看到任何奇怪的东西 - 新页面按预期出现。
-
如果是视觉上的东西,也许记录意外行为甚至可以解释
-
对。我不知道该怎么做,但我解决了这个问题。视觉问题是第二个页面 - 及其应用栏和所有页面 - 出现在第一页的中间,就像一个小部件。如果你能想象到
标签: flutter