我想创建一个带有底部导航栏的脚手架,以及一个始终显示当前页面标题的应用栏。当我更改底部栏选项时,内容会发生明显变化。到目前为止,经典的 NavigationBar 结构一切正常。但是当内容页面上应该有标签时,问题就开始了。我在父母脚手架中创建了我的应用栏。无论如何要向父小部件 appBar 添加选项卡?
我的 AppBar + BottomNavBar 页面:
class MainPage extends StatefulWidget {
@override
State<StatefulWidget> createState() {
return _MainPageState();
}
}
class _MainPageState extends State<MainPage> {
int _currentPageIndex;
List<Widget> _pages = List();
Widget _getCurrentPage() => _pages[_currentPageIndex];
@override
void initState() {
setState(() {
_currentPageIndex = 0;
_pages.add(BlocProvider(bloc: AgendaBloc(), child: AgendaPage()));
_pages.add(SpeakersPage());
_pages.add(MenuPage());
});
super.initState();
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: MyAppBar( title: 'Agenda'),
body: _getCurrentPage(),
bottomNavigationBar: BottomNavigationBar(
currentIndex: _currentPageIndex,
onTap: (index){
setState(() {
_currentPageIndex = index; …Run Code Online (Sandbox Code Playgroud) 在我的代码中,我想在抽象类中创建一个方法,它返回一些Observable.然后,这个抽象类的实现将返回某个(指定)类型的Observable.不幸的是,Android Studio将在实现方法()中返回错误"类型不匹配":
我的MockDrawerList.getList()回报Observable<DrawerItemEntity>
请专注于execute()和buildUseCaseObservable
public abstract class UseCase(threadExecutor: ThreadExecutor,
postExecutionThread: PostExecutionThread) {
private val threadExecutor: ThreadExecutor
private val postExecutionThread: PostExecutionThread
private var subscription: Subscription = Subscriptions.empty()
init {
this.postExecutionThread = postExecutionThread
this.threadExecutor = threadExecutor
}
protected abstract fun buildUseCaseObservable(): Observable<Any>
public fun execute(useCaseSubsriber: Subscriber<Any>) {
subscription = buildUseCaseObservable()
.subscribeOn(Schedulers.from(threadExecutor))
.observeOn(postExecutionThread.getScheduler())
.subscribe(useCaseSubsriber)
}
public fun unsubsribe() {
if (!subscription.isUnsubscribed())
subscription.unsubscribe()
}
}
Run Code Online (Sandbox Code Playgroud)
Inject
class GetDrawerListUseCase(threadExecutor: ThreadExecutor,
postExecutionThread:PostExecutionThread) : UseCase(threadExecutor, …Run Code Online (Sandbox Code Playgroud)